{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# **Overview of MPOPT**\n",
    "(c) 2023 Devakumar Thammisetty\n",
    "\n",
    "MPOPT is an open-source Multi-phase Optimal Control Problem (OCP) solver based on pseudo-spectral collocation with customized adaptive grid refinement techniques.\n",
    "\n",
    "https://mpopt.readthedocs.io/\n",
    "\n",
    "Download this notebook: [getting_started.ipynb](https://github.com/mpopt/mpopt/blob/docs/docs/source/notebooks/getting_started.ipynb)\n",
    "\n",
    "Tip: Ctrl + Tab (For the documentation of commands/syntax)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Install mpopt from pypi using the following. Disable after first usage"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "#pip install mpopt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Import mpopt (Contains main solver modules)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# from context import mpopt\n",
    "from mpopt import mp"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Defining OCP\n",
    "\n",
    "We first create an OCP object and then polulate the object with dynamics, path_constraints, terminal_constraints and objective (running_costs, terminal_costs)\n",
    "* create an OCP object (Lets define moon-lander OCP)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "ocp = mp.OCP(n_states=2, n_controls=1, n_phases=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* Add dynamics to the OCP. The solver being multi-phase, we add phase index to dynamics definition. \n",
    "\n",
    "#### Moon lander (2D)\n",
    "\n",
    "$ \\dot{x} = v; \\quad \\dot{v} = u - g$\n",
    "\n",
    "* Using the standard Bolza form of OCP,\n",
    "$\\dot{x} = f(x, u, t) \\quad \\implies$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "ocp.dynamics[0] = lambda x, u, t: [x[1], u[0] - 1.5]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* Add objective function, Lets get fuel optimal solution (u : Thrust level), Using standard Bolza form\n",
    "\n",
    "$ J = 0 + \\int_{t_0}^{t_f} u dt $"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "ocp.running_costs[0] = lambda x, u, t: u[0]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* Add terminal constraints. The target is to reach (postion : 0, velocity : 0), Using standard terminal constraints function\n",
    "\n",
    "$h(x_f, t_f, x_0, t_0) = 0 $"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "ocp.terminal_constraints[0] = lambda xf, tf, x0, t0: [xf[0], xf[1]]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* Define starting position and initial velocity\n",
    "\n",
    "$x[phase]$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "ocp.x00[0] = [10.0, -2.0]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* Thrust is constrained between 0 and 3. \n",
    "$ \\implies 0 \\leq u \\leq 3$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "ocp.lbu[0], ocp.ubu[0] = 0, 3"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* Validate if the ocp is well defined"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "ocp.validate()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Solve and plot the results in one line\n",
    "\n",
    "Lets solve the OCP using following pseudo-spectral approximation\n",
    "* Collocation using Legendre-Gauss-Radau roots\n",
    "* Global collocation (single segment)\n",
    "* Let's plot the position and velocity evolution with time starting from 0.\n",
    "\n",
    "The OCP is a free final time formulation, "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "******************************************************************************\n",
      "This program contains Ipopt, a library for large-scale nonlinear optimization.\n",
      " Ipopt is released as open source code under the Eclipse Public License (EPL).\n",
      "         For more information visit http://projects.coin-or.org/Ipopt\n",
      "******************************************************************************\n",
      "\n",
      "Total number of variables............................:       62\n",
      "                     variables with only lower bounds:        1\n",
      "                variables with lower and upper bounds:       21\n",
      "                     variables with only upper bounds:        0\n",
      "Total number of equality constraints.................:       44\n",
      "Total number of inequality constraints...............:       20\n",
      "        inequality constraints with only lower bounds:        0\n",
      "   inequality constraints with lower and upper bounds:       20\n",
      "        inequality constraints with only upper bounds:        0\n",
      "\n",
      "\n",
      "Number of Iterations....: 32\n",
      "\n",
      "                                   (scaled)                 (unscaled)\n",
      "Objective...............:   8.2761173492672846e+00    8.2761173492672846e+00\n",
      "Dual infeasibility......:   2.0966561820046081e-13    2.0966561820046081e-13\n",
      "Constraint violation....:   2.1158024305670053e-13    4.6895820560166612e-13\n",
      "Complementarity.........:   4.4232360760788451e-09    4.4232360760788451e-09\n",
      "Overall NLP error.......:   4.4232360760788451e-09    4.4232360760788451e-09\n",
      "\n",
      "\n",
      "Number of objective function evaluations             = 33\n",
      "Number of objective gradient evaluations             = 33\n",
      "Number of equality constraint evaluations            = 33\n",
      "Number of inequality constraint evaluations          = 33\n",
      "Number of equality constraint Jacobian evaluations   = 33\n",
      "Number of inequality constraint Jacobian evaluations = 33\n",
      "Number of Lagrangian Hessian evaluations             = 32\n",
      "Total CPU secs in IPOPT (w/o function evaluations)   =      0.031\n",
      "Total CPU secs in NLP function evaluations           =      0.003\n",
      "\n",
      "EXIT: Optimal Solution Found.\n",
      "      solver  :   t_proc      (avg)   t_wall      (avg)    n_eval\n",
      "       nlp_f  | 107.00us (  3.24us) 105.20us (  3.19us)        33\n",
      "       nlp_g  | 655.00us ( 19.85us) 644.61us ( 19.53us)        33\n",
      "    nlp_grad  |  37.00us ( 37.00us)  36.03us ( 36.03us)         1\n",
      "  nlp_grad_f  | 137.00us (  4.03us) 137.07us (  4.03us)        34\n",
      "  nlp_hess_l  | 160.00us (  5.00us) 153.51us (  4.80us)        32\n",
      "   nlp_jac_g  | 872.00us ( 25.65us) 853.83us ( 25.11us)        34\n",
      "       total  |  40.94ms ( 40.94ms)  40.44ms ( 40.44ms)         1\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "mpo, post = mp.solve(ocp, n_segments=1, poly_orders=20, scheme=\"LGR\", plot=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The tics in the solution represent the values at collocation nodes. The states and controls are plotted by interpolating the lagrange polynomials at only few points in a single segment (by default). Let's interpolate with better resolution for plotting."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "post._INTERPOLATION_NODES_PER_SEG = 200"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Lets plot the same result again, this time the control profile is more refined. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axs = post.plot_phases()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Lets retrive the solution to see the terminal time"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "x, u, t, _ = post.get_data()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Last element of t and x gives the terminal values. Exact terminal time from the analytical solution is 4.1641s."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Terminal time, state : [4.18408515], [0. 0.]\n"
     ]
    }
   ],
   "source": [
    "print(f\"Terminal time, state : {t[-1]}, {x[-1]}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The Fuel optimal solution to the moon-lander OCP is known to have bang-bang thrust profile. The selected OCP has one discontinuity. To better appoximate the solution, we can divide the domain into multiple segments.\n",
    "\n",
    "Lets solve the problem now using better collocation approximation, based on the bang-nag nature of the thrust profile.\n",
    "* Number of segments : 20\n",
    "* Polynomials of degree : 3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Total number of variables............................:      182\n",
      "                     variables with only lower bounds:        1\n",
      "                variables with lower and upper bounds:       61\n",
      "                     variables with only upper bounds:        0\n",
      "Total number of equality constraints.................:      124\n",
      "Total number of inequality constraints...............:       60\n",
      "        inequality constraints with only lower bounds:        0\n",
      "   inequality constraints with lower and upper bounds:       60\n",
      "        inequality constraints with only upper bounds:        0\n",
      "\n",
      "\n",
      "Number of Iterations....: 27\n",
      "\n",
      "                                   (scaled)                 (unscaled)\n",
      "Objective...............:   8.2467705949558123e+00    8.2467705949558123e+00\n",
      "Dual infeasibility......:   9.0938472030455131e-10    9.0938472030455131e-10\n",
      "Constraint violation....:   1.1163384106005481e-10    1.1163384106005481e-10\n",
      "Complementarity.........:   2.8011188563262397e-09    2.8011188563262397e-09\n",
      "Overall NLP error.......:   2.8011188563262397e-09    2.8011188563262397e-09\n",
      "\n",
      "\n",
      "Number of objective function evaluations             = 28\n",
      "Number of objective gradient evaluations             = 28\n",
      "Number of equality constraint evaluations            = 28\n",
      "Number of inequality constraint evaluations          = 28\n",
      "Number of equality constraint Jacobian evaluations   = 28\n",
      "Number of inequality constraint Jacobian evaluations = 28\n",
      "Number of Lagrangian Hessian evaluations             = 27\n",
      "Total CPU secs in IPOPT (w/o function evaluations)   =      0.036\n",
      "Total CPU secs in NLP function evaluations           =      0.002\n",
      "\n",
      "EXIT: Optimal Solution Found.\n",
      "      solver  :   t_proc      (avg)   t_wall      (avg)    n_eval\n",
      "       nlp_f  | 136.00us (  4.86us) 118.60us (  4.24us)        28\n",
      "       nlp_g  | 406.00us ( 14.50us) 381.40us ( 13.62us)        28\n",
      "    nlp_grad  |  32.00us ( 32.00us)  30.78us ( 30.78us)         1\n",
      "  nlp_grad_f  | 181.00us (  6.24us) 180.28us (  6.22us)        29\n",
      "  nlp_hess_l  | 209.00us (  7.74us) 213.08us (  7.89us)        27\n",
      "   nlp_jac_g  | 588.00us ( 20.28us) 596.16us ( 20.56us)        29\n",
      "       total  |  45.16ms ( 45.16ms)  44.64ms ( 44.64ms)         1\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "mpo, post = mp.solve(ocp, n_segments=20, poly_orders=3, scheme=\"LGR\", plot=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The solution is now more refined. Lets look at the terminal time."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Terminal time, s : 4.164513728300145 vs 4.1641\n"
     ]
    }
   ],
   "source": [
    "print(f\"Terminal time, s : {post.get_data()[-2][-1][0]} vs 4.1641\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's find the best solution by increasing the collocation nodes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Total number of variables............................:     1802\n",
      "                     variables with only lower bounds:        1\n",
      "                variables with lower and upper bounds:      601\n",
      "                     variables with only upper bounds:        0\n",
      "Total number of equality constraints.................:     1204\n",
      "Total number of inequality constraints...............:      600\n",
      "        inequality constraints with only lower bounds:        0\n",
      "   inequality constraints with lower and upper bounds:      600\n",
      "        inequality constraints with only upper bounds:        0\n",
      "\n",
      "\n",
      "Number of Iterations....: 37\n",
      "\n",
      "                                   (scaled)                 (unscaled)\n",
      "Objective...............:   8.2462261003890180e+00    8.2462261003890180e+00\n",
      "Dual infeasibility......:   8.6040791955302345e-09    8.6040791955302345e-09\n",
      "Constraint violation....:   7.7103325623033986e-12    7.7103325623033986e-12\n",
      "Complementarity.........:   4.9748392890300547e-09    4.9748392890300547e-09\n",
      "Overall NLP error.......:   8.6040791955302345e-09    8.6040791955302345e-09\n",
      "\n",
      "\n",
      "Number of objective function evaluations             = 40\n",
      "Number of objective gradient evaluations             = 38\n",
      "Number of equality constraint evaluations            = 40\n",
      "Number of inequality constraint evaluations          = 40\n",
      "Number of equality constraint Jacobian evaluations   = 38\n",
      "Number of inequality constraint Jacobian evaluations = 38\n",
      "Number of Lagrangian Hessian evaluations             = 37\n",
      "Total CPU secs in IPOPT (w/o function evaluations)   =      0.526\n",
      "Total CPU secs in NLP function evaluations           =      0.024\n",
      "\n",
      "EXIT: Optimal Solution Found.\n",
      "      solver  :   t_proc      (avg)   t_wall      (avg)    n_eval\n",
      "       nlp_f  |   1.01ms ( 25.27us)   1.03ms ( 25.64us)        40\n",
      "       nlp_g  |   5.83ms (145.78us)   5.88ms (147.01us)        40\n",
      "    nlp_grad  | 217.00us (217.00us) 216.00us (216.00us)         1\n",
      "  nlp_grad_f  |   2.01ms ( 51.54us)   2.07ms ( 53.07us)        39\n",
      "  nlp_hess_l  |   2.76ms ( 74.54us)   2.83ms ( 76.36us)        37\n",
      "   nlp_jac_g  |   9.85ms (252.44us)   9.97ms (255.67us)        39\n",
      "       total  | 560.06ms (560.06ms) 562.15ms (562.15ms)         1\n",
      "\n",
      "Terminal time, s : 4.164150730471649 vs 4.1641\n"
     ]
    }
   ],
   "source": [
    "mpo, post = mp.solve(ocp, n_segments=200, poly_orders=3, scheme=\"LGR\", plot=False)\n",
    "print(f\"\\nTerminal time, s : {post.get_data()[-2][-1][0]} vs 4.1641\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's check how the Legendre-Gauss-Lobatto roots solve the OCP"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Total number of variables............................:     1802\n",
      "                     variables with only lower bounds:        1\n",
      "                variables with lower and upper bounds:      601\n",
      "                     variables with only upper bounds:        0\n",
      "Total number of equality constraints.................:     1204\n",
      "Total number of inequality constraints...............:      600\n",
      "        inequality constraints with only lower bounds:        0\n",
      "   inequality constraints with lower and upper bounds:      600\n",
      "        inequality constraints with only upper bounds:        0\n",
      "\n",
      "\n",
      "Number of Iterations....: 43\n",
      "\n",
      "                                   (scaled)                 (unscaled)\n",
      "Objective...............:   6.8719619301753303e+00    6.8719619301753303e+00\n",
      "Dual infeasibility......:   6.8378168457426487e-10    6.8378168457426487e-10\n",
      "Constraint violation....:   4.7340048808103274e-09    4.7340048808103274e-09\n",
      "Complementarity.........:   4.9474825217262614e-09    4.9474825217262614e-09\n",
      "Overall NLP error.......:   4.9474825217262614e-09    4.9474825217262614e-09\n",
      "\n",
      "\n",
      "Number of objective function evaluations             = 49\n",
      "Number of objective gradient evaluations             = 44\n",
      "Number of equality constraint evaluations            = 49\n",
      "Number of inequality constraint evaluations          = 49\n",
      "Number of equality constraint Jacobian evaluations   = 44\n",
      "Number of inequality constraint Jacobian evaluations = 44\n",
      "Number of Lagrangian Hessian evaluations             = 43\n",
      "Total CPU secs in IPOPT (w/o function evaluations)   =      0.603\n",
      "Total CPU secs in NLP function evaluations           =      0.023\n",
      "\n",
      "EXIT: Optimal Solution Found.\n",
      "      solver  :   t_proc      (avg)   t_wall      (avg)    n_eval\n",
      "       nlp_f  | 954.00us ( 19.47us) 960.21us ( 19.60us)        49\n",
      "       nlp_g  |   5.50ms (112.27us)   5.43ms (110.86us)        49\n",
      "    nlp_grad  | 223.00us (223.00us) 221.65us (221.65us)         1\n",
      "  nlp_grad_f  |   1.94ms ( 43.18us)   1.93ms ( 42.85us)        45\n",
      "  nlp_hess_l  |   2.49ms ( 57.86us)   2.53ms ( 58.73us)        43\n",
      "   nlp_jac_g  |   9.22ms (204.80us)   9.28ms (206.30us)        45\n",
      "       total  | 639.25ms (639.25ms) 640.59ms (640.59ms)         1\n",
      "\n",
      "Terminal time using Lobatto roots , s : 4.723467249085487 vs 4.1641\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "mpo, post = mp.solve(ocp, n_segments=200, poly_orders=3, scheme=\"LGL\", plot=True)\n",
    "print(f\"\\nTerminal time using Lobatto roots , s : {post.get_data()[-2][-1][0]} vs 4.1641\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Pretty bad result, huh!. The thrust profile is not smooth. Besides, so many number of segments. Lobatto roots lead to better convergence when the degree of the polynomial is higher."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Adding additional constraints to the OCP\n",
    "\n",
    "Let's constrain the derivative of control between $\\pm 1$.\n",
    "\n",
    "$-1 \\leq \\dot{u} \\leq 1$\n",
    "\n",
    "* Enable the differential constraint\n",
    "* Choose bounds of the control slope"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "ocp.diff_u[0] = 1\n",
    "ocp.lbdu[0], ocp.ubdu[0] = -1, 1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's solve again by adding the above constraint."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Total number of variables............................:      302\n",
      "                     variables with only lower bounds:        1\n",
      "                variables with lower and upper bounds:      101\n",
      "                     variables with only upper bounds:        0\n",
      "Total number of equality constraints.................:      204\n",
      "Total number of inequality constraints...............:      201\n",
      "        inequality constraints with only lower bounds:        0\n",
      "   inequality constraints with lower and upper bounds:      201\n",
      "        inequality constraints with only upper bounds:        0\n",
      "\n",
      "\n",
      "Number of Iterations....: 37\n",
      "\n",
      "                                   (scaled)                 (unscaled)\n",
      "Objective...............:   8.1830972803611104e+00    8.1830972803611104e+00\n",
      "Dual infeasibility......:   4.1509781723014783e-12    4.1509781723014783e-12\n",
      "Constraint violation....:   1.5669132658047147e-12    1.5669132658047147e-12\n",
      "Complementarity.........:   6.2935769633503253e-09    6.2935769633503253e-09\n",
      "Overall NLP error.......:   6.2935769633503253e-09    6.2935769633503253e-09\n",
      "\n",
      "\n",
      "Number of objective function evaluations             = 38\n",
      "Number of objective gradient evaluations             = 38\n",
      "Number of equality constraint evaluations            = 38\n",
      "Number of inequality constraint evaluations          = 38\n",
      "Number of equality constraint Jacobian evaluations   = 38\n",
      "Number of inequality constraint Jacobian evaluations = 38\n",
      "Number of Lagrangian Hessian evaluations             = 37\n",
      "Total CPU secs in IPOPT (w/o function evaluations)   =      0.127\n",
      "Total CPU secs in NLP function evaluations           =      0.009\n",
      "\n",
      "EXIT: Optimal Solution Found.\n",
      "      solver  :   t_proc      (avg)   t_wall      (avg)    n_eval\n",
      "       nlp_f  | 226.00us (  5.95us) 224.61us (  5.91us)        38\n",
      "       nlp_g  |   2.34ms ( 61.47us)   2.33ms ( 61.43us)        38\n",
      "    nlp_grad  | 103.00us (103.00us) 101.35us (101.35us)         1\n",
      "  nlp_grad_f  | 383.00us (  9.82us) 381.89us (  9.79us)        39\n",
      "  nlp_hess_l  | 540.00us ( 14.59us) 536.47us ( 14.50us)        37\n",
      "   nlp_jac_g  |   3.68ms ( 94.31us)   3.68ms ( 94.31us)        39\n",
      "       total  | 141.83ms (141.83ms) 141.31ms (141.31ms)         1\n",
      "\n",
      "Terminal time using Lobatto roots , s : 4.181973552017318 vs 4.1641\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "mpo, post = mp.solve(ocp, n_segments=10, poly_orders=10, scheme=\"LGL\", plot=False)\n",
    "post._INTERPOLATION_NODES_PER_SEG = 20\n",
    "post.plot_phases()\n",
    "print(f\"\\nTerminal time using Lobatto roots , s : {post.get_data()[-2][-1][0]} vs 4.1641\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Change the number of semgents and approximating to see how the solution behaves.\n",
    "\n",
    "Disable the slope constraint for further calculations. Also, Radau roots are found to be approximating the given solution best!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "ocp.diff_u[0] = 0"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's see what happens if we increase the polynomial degree to 25."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Total number of variables............................:      302\n",
      "                     variables with only lower bounds:        1\n",
      "                variables with lower and upper bounds:      101\n",
      "                     variables with only upper bounds:        0\n",
      "Total number of equality constraints.................:      204\n",
      "Total number of inequality constraints...............:      100\n",
      "        inequality constraints with only lower bounds:        0\n",
      "   inequality constraints with lower and upper bounds:      100\n",
      "        inequality constraints with only upper bounds:        0\n",
      "\n",
      "\n",
      "Number of Iterations....: 33\n",
      "\n",
      "                                   (scaled)                 (unscaled)\n",
      "Objective...............:   8.2474708225946607e+00    8.2474708225946607e+00\n",
      "Dual infeasibility......:   1.6677959013833288e-10    1.6677959013833288e-10\n",
      "Constraint violation....:   1.4281908988778014e-12    1.4281908988778014e-12\n",
      "Complementarity.........:   3.7873959059406158e-09    3.7873959059406158e-09\n",
      "Overall NLP error.......:   3.7873959059406158e-09    3.7873959059406158e-09\n",
      "\n",
      "\n",
      "Number of objective function evaluations             = 34\n",
      "Number of objective gradient evaluations             = 34\n",
      "Number of equality constraint evaluations            = 34\n",
      "Number of inequality constraint evaluations          = 34\n",
      "Number of equality constraint Jacobian evaluations   = 34\n",
      "Number of inequality constraint Jacobian evaluations = 34\n",
      "Number of Lagrangian Hessian evaluations             = 33\n",
      "Total CPU secs in IPOPT (w/o function evaluations)   =      0.842\n",
      "Total CPU secs in NLP function evaluations           =      0.038\n",
      "\n",
      "EXIT: Optimal Solution Found.\n",
      "      solver  :   t_proc      (avg)   t_wall      (avg)    n_eval\n",
      "       nlp_f  | 230.00us (  6.76us) 227.56us (  6.69us)        34\n",
      "       nlp_g  |  13.38ms (393.53us)  13.32ms (391.79us)        34\n",
      "    nlp_grad  |   1.01ms (  1.01ms)   1.01ms (  1.01ms)         1\n",
      "  nlp_grad_f  | 339.00us (  9.69us) 336.59us (  9.62us)        35\n",
      "  nlp_hess_l  | 469.00us ( 14.21us) 445.26us ( 13.49us)        33\n",
      "   nlp_jac_g  |  20.64ms (589.77us)  20.62ms (589.24us)        35\n",
      "       total  | 887.76ms (887.76ms) 885.12ms (885.12ms)         1\n",
      "\n",
      "Terminal time using Radau roots , s : 4.164977321921443 vs 4.1641\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "mpo, post = mp.solve(ocp, n_segments=1, poly_orders=100, scheme=\"LGR\", plot=False)\n",
    "post._INTERPOLATION_NODES_PER_SEG = 200\n",
    "post.plot_phases()\n",
    "print(f\"\\nTerminal time using Radau roots , s : {post.get_data()[-2][-1][0]} vs 4.1641\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The derivative and interpolation matrices are evaluated using CasADi algorithmic differentiation. Hence, high values of polynomial order such as 100 are feasible.\n",
    "\n",
    "On the contrary, if the derivative operators are contructed using numpy's polynomial module, as the number of nodes increases, numerical noise builds up in the D matrix approximation leading to unstable solution. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Adaptive grid refinement schemes\n",
    "\n",
    "A good guess of the number of segments and polynomial order are necessary to get exact solution. However, adaptive grid refinement techniques solve this problem by relocating the collocation points.\n",
    "\n",
    "There are three inbuit refinement schemes in the package. First two are iterative. Refer theis for the exact details of implementaion.\n",
    "\n",
    "The schemes are named as follows\n",
    "* Adaptive_h_refinement (Iterative)\n",
    "  * Scheme-1: Based on control slope\n",
    "  * Scheme-2: Based on residual in dynamics\n",
    "* Scheme-3: Direct optimization of segment widths (h)\n",
    "\n",
    "Let's see how grid refinement changes the solution to moon-lander OCP"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's create the optimizer object"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "mpo = mp.mpopt_h_adaptive(ocp, 10, 4) # Use ctrl + tab for help, inside ()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Adaptive scheme-I"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's solve the OCP using scheme 1. Let's limit the maximum iterations to 1. (Same as non-adaptive solution)\n",
    "\n",
    "* control_slope"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Iteration : 1, None\n",
      "      solver  :   t_proc      (avg)   t_wall      (avg)    n_eval\n",
      "       nlp_f  | 208.00us (  5.20us) 210.50us (  5.26us)        40\n",
      "       nlp_g  | 735.00us ( 18.38us) 703.82us ( 17.60us)        40\n",
      "    nlp_grad  |  25.00us ( 25.00us)  24.54us ( 24.54us)         1\n",
      "  nlp_grad_f  | 314.00us (  7.85us) 330.93us (  8.27us)        40\n",
      "  nlp_hess_l  | 439.00us ( 11.55us) 489.03us ( 12.87us)        38\n",
      "   nlp_jac_g  | 867.00us ( 21.67us) 888.12us ( 22.20us)        40\n",
      "       total  |  64.14ms ( 64.14ms)  65.52ms ( 65.52ms)         1\n",
      "Stopping the iterations: Iteration limit exceeded\n",
      "Adaptive Iter., max_residual : 1, None\n"
     ]
    }
   ],
   "source": [
    "solution = mpo.solve(max_iter=1, mpopt_options={'method':'control_slope'})"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's process the solution and plot states and controls. This solution is same as the non-adaptive solution, since the max iterations are set to 1."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "post = mpo.process_results(solution, plot=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's increase the number of iterations and see how the grid refinement works. Let's enable the residual plot as well."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Iteration : 1, None\n",
      "      solver  :   t_proc      (avg)   t_wall      (avg)    n_eval\n",
      "       nlp_f  | 189.00us (  4.72us) 191.75us (  4.79us)        40\n",
      "       nlp_g  | 632.00us ( 15.80us) 603.13us ( 15.08us)        40\n",
      "    nlp_grad  |  24.00us ( 24.00us)  23.42us ( 23.42us)         1\n",
      "  nlp_grad_f  | 301.00us (  7.53us) 297.17us (  7.43us)        40\n",
      "  nlp_hess_l  | 334.00us (  8.79us) 326.50us (  8.59us)        38\n",
      "   nlp_jac_g  | 806.00us ( 20.15us) 827.00us ( 20.68us)        40\n",
      "       total  |  53.65ms ( 53.65ms)  54.03ms ( 54.03ms)         1\n",
      "Iteration : 2, 0.09630934143819947\n",
      "      solver  :   t_proc      (avg)   t_wall      (avg)    n_eval\n",
      "       nlp_f  |  91.00us (  3.96us)  91.06us (  3.96us)        23\n",
      "       nlp_g  | 289.00us ( 12.57us) 282.83us ( 12.30us)        23\n",
      "    nlp_grad  |  23.00us ( 23.00us)  23.18us ( 23.18us)         1\n",
      "  nlp_grad_f  | 139.00us (  5.79us) 134.55us (  5.61us)        24\n",
      "  nlp_hess_l  | 151.00us (  6.86us) 150.05us (  6.82us)        22\n",
      "   nlp_jac_g  | 382.00us ( 15.92us) 385.26us ( 16.05us)        24\n",
      "       total  |  24.74ms ( 24.74ms)  24.73ms ( 24.73ms)         1\n",
      "Stopping the iterations: Iteration limit exceeded\n",
      "Adaptive Iter., max_residual : 2, 0.09630934143819947\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "max_iter = 2\n",
    "solution = mpo.solve(max_iter=max_iter, mpopt_options={'method':'control_slope'})\n",
    "post = mpo.process_results(solution, plot=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note that the grid is refine with more points towards the discontinuity in one iteration. Let's check the terminal time."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Terminal time using Adaptive +1 iteration , s : 4.1643 vs 4.1641\n"
     ]
    }
   ],
   "source": [
    "print(f\"\\nTerminal time using Adaptive +{max_iter-1} iteration , s : {round(post.get_data()[-2][-1][0], 4)} vs 4.1641\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's further increase the iterations and check the final result on convergence. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Iteration : 1, None\n",
      "      solver  :   t_proc      (avg)   t_wall      (avg)    n_eval\n",
      "       nlp_f  | 169.00us (  4.22us) 168.29us (  4.21us)        40\n",
      "       nlp_g  | 496.00us ( 12.40us) 483.84us ( 12.10us)        40\n",
      "    nlp_grad  |  24.00us ( 24.00us)  23.77us ( 23.77us)         1\n",
      "  nlp_grad_f  | 255.00us (  6.38us) 242.13us (  6.05us)        40\n",
      "  nlp_hess_l  | 298.00us (  7.84us) 295.79us (  7.78us)        38\n",
      "   nlp_jac_g  | 725.00us ( 18.12us) 729.26us ( 18.23us)        40\n",
      "       total  |  47.80ms ( 47.80ms)  47.81ms ( 47.81ms)         1\n",
      "Iteration : 2, 0.09630934143819947\n",
      "      solver  :   t_proc      (avg)   t_wall      (avg)    n_eval\n",
      "       nlp_f  | 109.00us (  4.74us) 108.77us (  4.73us)        23\n",
      "       nlp_g  | 353.00us ( 15.35us) 340.42us ( 14.80us)        23\n",
      "    nlp_grad  |  24.00us ( 24.00us)  23.69us ( 23.69us)         1\n",
      "  nlp_grad_f  | 175.00us (  7.29us) 165.52us (  6.90us)        24\n",
      "  nlp_hess_l  | 195.00us (  8.86us) 187.63us (  8.53us)        22\n",
      "   nlp_jac_g  | 468.00us ( 19.50us) 469.91us ( 19.58us)        24\n",
      "       total  |  30.43ms ( 30.43ms)  31.06ms ( 31.06ms)         1\n",
      "Iteration : 3, 0.02222765672874663\n",
      "      solver  :   t_proc      (avg)   t_wall      (avg)    n_eval\n",
      "       nlp_f  |  90.00us (  5.62us)  87.54us (  5.47us)        16\n",
      "       nlp_g  | 294.00us ( 18.38us) 279.84us ( 17.49us)        16\n",
      "    nlp_grad  |  24.00us ( 24.00us)  23.59us ( 23.59us)         1\n",
      "  nlp_grad_f  | 142.00us (  8.35us) 135.88us (  7.99us)        17\n",
      "  nlp_hess_l  | 130.00us (  8.67us) 126.77us (  8.45us)        15\n",
      "   nlp_jac_g  | 362.00us ( 21.29us) 366.37us ( 21.55us)        17\n",
      "       total  |  23.58ms ( 23.58ms)  23.51ms ( 23.51ms)         1\n",
      "Solved phase 0 to acceptable level 0.01, residual: 0.006246451994146307\n",
      "Adaptive Iter., max_residual : 3, 0.006246451994146307\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "max_iter = 10\n",
    "solution = mpo.solve(max_iter=max_iter, mpopt_options={'method':'control_slope'})\n",
    "post = mpo.process_results(solution, plot=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Terminal time using Adaptive +9 iteration , s : 4.1641 vs 4.1641\n"
     ]
    }
   ],
   "source": [
    "print(f\"\\nTerminal time using Adaptive +{max_iter-1} iteration , s : {round(post.get_data()[-2][-1][0], 4)} vs 4.1641\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The solution converged in 3 iterations and terminal time matches to 4 th digit with 40 nodes."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Adaptive scheme-II\n",
    "\n",
    "The method is based on the estimates of residual at the mid points of the collocation nodes. Further, two sub-methods are implemented in the software\n",
    "\n",
    "* residual based\n",
    "  * merge/split\n",
    "  * equal residual segments"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's solve the same OCP using Adaptive scheme-II. This time let's enable the residual evolution plots."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "mpo = mp.mpopt_h_adaptive(ocp, 10, 4) # Use ctrl + tab for help, inside ()\n",
    "mpo.plot_residual_evolution = True"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Submethod-1: merge/split**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Iteration : 1, None\n",
      "      solver  :   t_proc      (avg)   t_wall      (avg)    n_eval\n",
      "       nlp_f  | 186.00us (  4.65us) 185.26us (  4.63us)        40\n",
      "       nlp_g  | 656.00us ( 16.40us) 632.13us ( 15.80us)        40\n",
      "    nlp_grad  |  25.00us ( 25.00us)  24.97us ( 24.97us)         1\n",
      "  nlp_grad_f  | 270.00us (  6.75us) 265.01us (  6.63us)        40\n",
      "  nlp_hess_l  | 308.00us (  8.11us) 303.06us (  7.98us)        38\n",
      "   nlp_jac_g  | 726.00us ( 18.15us) 731.33us ( 18.28us)        40\n",
      "       total  |  54.54ms ( 54.54ms)  54.36ms ( 54.36ms)         1\n",
      "Iteration : 2, 0.09630934143819947\n",
      "      solver  :   t_proc      (avg)   t_wall      (avg)    n_eval\n",
      "       nlp_f  |  69.00us (  4.31us)  68.13us (  4.26us)        16\n",
      "       nlp_g  | 213.00us ( 13.31us) 209.44us ( 13.09us)        16\n",
      "    nlp_grad  |  23.00us ( 23.00us)  22.82us ( 22.82us)         1\n",
      "  nlp_grad_f  | 131.00us (  7.71us) 131.79us (  7.75us)        17\n",
      "  nlp_hess_l  | 138.00us (  9.20us) 138.81us (  9.25us)        15\n",
      "   nlp_jac_g  | 328.00us ( 19.29us) 316.15us ( 18.60us)        17\n",
      "       total  |  18.19ms ( 18.19ms)  18.15ms ( 18.15ms)         1\n",
      "Stopping the iterations: Iteration limit exceeded\n",
      "Adaptive Iter., max_residual : 2, 0.09630934143819947\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEICAYAAABF82P+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nO3de3xddZ3v/9dn79yaJr1Q2tIbTRWolgIFQstw0RYHAQWKDiKIHGYOTj1HOTo6I+DI4VeZygHGozOg47QjjEhF5DDqVGlFuUQrMKUt97ZAC72Qlpo2vSVpc9nZn98fa+1kJ9nJ3gnZlybv5+ORx157XT/7m5X9yfey1jJ3R0REpLtIvgMQEZHCpAQhIiIpKUGIiEhKShAiIpKSEoSIiKSkBCEiIillNUGY2cVm9oaZbTGzW1Is/5CZvWBmMTO7stuy681sc/hzfTbjFBGRnixb10GYWRR4E7gQqAXWAte4+8akdaqAUcDfASvc/dFw/jHAOqAacGA9cKa77+/teMcee6xXVVUNKNampiZGjhw5oG2HE5VTeiqj9FRG6eWyjNavX7/X3cenWlaUxePOBba4+9sAZvYwsBDoSBDuvi1cFu+27UXA79x9X7j8d8DFwE97O1hVVRXr1q0bUKA1NTXMnz9/QNsOJyqn9FRG6amM0stlGZnZ9t6WZbOJaQrwTtL72nBetrcVEZFBkM0aRNaZ2SJgEcDEiROpqakZ0H4aGxsHvO1wonJKT2WUnsoovUIpo2wmiJ3AtKT3U8N5mW47v9u2Nd1XcvdlwDKA6upqH2iVTFXezKic0lMZpacySq9QyiibCWItcKKZzSD4wr8a+EyG2z4O3GFmY8P3HwW+Pvghishw0dbWRm1tLc3NzfkOJa3Ro0ezadOmQd1nWVkZU6dOpbi4OONtspYg3D1mZjcSfNlHgfvdfYOZ3Q6sc/cVZnYW8AtgLHCZmX3T3U92931m9g8ESQbg9kSHtYjIQNTW1lJZWUlVVRVmlu9w+tTQ0EBlZeWg7c/dqa+vp7a2lhkzZmS8XVb7INx9JbCy27zbkqbXEjQfpdr2fuD+bMYnuVd3qJkbf/oi3/vM6UyoLMt3ODKMNDc3HxXJIRvMjHHjxrFnz55+bacrqSWn7nlyM2u37eOeJzbnOxQZhoZjckgYyGc/qkcxydFj5q2raInFmW1vcwrO8jWwfM0OSosivLHkknyHJyIpqAYhObH6pgVcPmcyvy69lRWl/5uy4ggL50xm9c0L8h2aSE5UVFQAsG3bNh566KH3vL9vfOMbTJs2rWO/2aAEITkxYVQZlaWdFdaWWJzK0iL1Q0hBqzvUzFVLn6OuYfBGPg0kQcRisR7zLrvsMp5//vnBCislJQjJmb2NLR3T186bzp6k9yKFKBt9ZrfccgurV69mzpw5fPe736W9vZ2vfe1rnHXWWZx66qksXboUCK6FOP/887n88suZNWtWj/2cffbZTJo0adDiSkV9EJIzS6+rhsXB9JIrZuc1FpG+JPrMEpav2TFofWZ33nkn3/72t/n1r38NwLJlyxg9ejRr166lpaWFc889l3POOQeAF154gddee61fQ1MHk2oQIiLdJPrMyoqDr8hs9pn99re/5cc//jFz5sxh3rx51NfX89ZbbwEwd+7cvCUHUA1CRKSHRJ9ZSyxOaVEkq31m7s69997LRRdd1DGvoaGB9evX5/226KpBiIiksLexhWvnTecXXzh3UPvMKisraWho6Hh/0UUX8YMf/IC2tjYA3nzzTZqamgblWO+VahAiIiksva66Y3ow+8xOPfVUotEop512Gn/5l3/Jl7/8ZbZt28YZZ5yBuzN+/HgefPDBtPu56aabeOihhzh8+DBTp07lc5/7HIsXLx60OEEJQkQkJxobGwEoLi7mqaee6rLsjjvu4I477uh439DQwPz58/u8o+vdd9/N3XffnZVYE9TEJCIiKSlBiIhISkoQIjJsuHu+Q8ibgXx2JQgRGRbKysqor68flkki8TyIsrL+DdNVJ7WIDAtTp06ltra2389EyIfm5uZ+f5mnk3iiXH8oQYjIsFBcXJzXq5L7o6amhtNPPz3fYaiJSUREUlOCEBGRlJQgREQkJSUIERFJSQlCRERSUoIQEZGUlCBERCQlJQgREUlJCUJERFJSgpD8GIb3wxE52ihBSH7E2/MdgYikoQQh+eFKECKFTglC8sPj+Y5ARNJQgpD8UBOTSMFTgpD8UA1CpOBlNUGY2cVm9oaZbTGzW1IsLzWzn4XL15hZVTi/2MweMLNXzWyTmX09m3FKHqgPQqTgZS1BmFkU+D5wCTALuMbMZnVb7QZgv7ufAHwXuCuc/ymg1N1PAc4EPp9IHjJEaJirSMHLZg1iLrDF3d9291bgYWBht3UWAg+E048CHzEzAxwYaWZFwAigFTiUxVgl19QHIVLwspkgpgDvJL2vDeelXMfdY8BBYBxBsmgC3gV2AN92931ZjFVyTU1MIgWvUJ9JPRdoByYDY4HVZvaEu7+dvJKZLQIWAUycOJGampoBHayxsXHA2w4ng1FO88PXZ599htbSce81pIKjcyk9lVF6hVJG2UwQO4FpSe+nhvNSrVMbNieNBuqBzwC/cfc2oM7MngGqgS4Jwt2XAcsAqqurff78+QMKtKamhoFuO5wMSjnVBC/nzJsLY6b1uerRSOdSeiqj9AqljLLZxLQWONHMZphZCXA1sKLbOiuA68PpK4Gn3N0JmpUuADCzkcDZwOtZjFVyTcNcRQpe1hJE2KdwI/A4sAl4xN03mNntZnZ5uNp9wDgz2wJ8FUgMhf0+UGFmGwgSzb+7+yvZilXyQH0QIgUvq30Q7r4SWNlt3m1J080EQ1q7b9eYar4MIRrmKlLwdCW15IeGuYoUPCUIyQ81MYkUPCUIyQ91UosUPCUIyQ81MYkUPCUIyQ/VIEQKnhKE5If6IEQKnhKE5IeGuYoUPCUIyQ/1QYgUPCUIyQ81MYkUPCUIyQ91UosUPCUIyQ81MYkUPCUIyQ/VIEQKnhKE5If6IEQKnhKE5EdcNQiRQqcEIfmhJiaRgqcEIfmhJiaRgqcEIfmhGoRIwVOCkPzQMFeRgqcEIfmhGoRIwVOCkPxQghApeEoQkh9qYhIpeEoQkh+qQYgUPCUIyQ8NcxUpeEoQkhc/qNlMXUNzvsMQkT4oQUhevLO3gXue2JzvMESkD0oQkjMzb13VMR0hzvI1O6i65bEu80WkcChBSM6svmlBx3SEOGXFERbOmczqmxf0sZWI5IsShOTMhFFlxDEASiNOSyxOZWkREyrL8hyZiKRSlO8AZHhxIkA7N5w7nSPN09mjjmqRgqUEITkVjRZBezvHVRSx5OLZ+Q5HRPqgJibJLQtPOV0HIVLwlCAktyLR4FVPlBMpeEoQkluqQYgcNbKaIMzsYjN7w8y2mNktKZaXmtnPwuVrzKwqadmpZvacmW0ws1fNTENdhoRgFBPxWH7DEJG0spYgzCwKfB+4BJgFXGNms7qtdgOw391PAL4L3BVuWwQsB/6Hu58MzAfashWr5JIHL7qbq0jBy2YNYi6wxd3fdvdW4GFgYbd1FgIPhNOPAh8xMwM+Crzi7i8DuHu9u9okhgQPE4R+nSIFL5vDXKcA7yS9rwXm9baOu8fM7CAwDjgJcDN7HBgPPOzud3c/gJktAhYBTJw4kZqamgEF2tjYOOBth5PBKKfz2tsoAt7Zvp23hmCZ61xKT2WUXqGUUaFeB1EEnAecBRwGnjSz9e7+ZPJK7r4MWAZQXV3t8+fPH9DBampqGOi2w8mglNOzRdAO06ZMYtoQLHOdS+mpjNIrlDLKZhPTTmBa0vup4byU64T9DqOBeoLaxh/cfa+7HwZWAmdkMVbJFTUxiRw1spkg1gInmtkMMysBrgZWdFtnBXB9OH0l8JS7O/A4cIqZlYeJ48PAxizGKjmjTmqRo0VGCcLMzjWzkeH0Z83sO2Y2va9t3D0G3EjwZb8JeMTdN5jZ7WZ2ebjafcA4M9sCfBW4Jdx2P/AdgiTzEvCCuz/W/48nBUs1CJGCl2kfxA+A08zsNOBvgR8CPyb4z75X7r6SoHkoed5tSdPNwKd62XY5wVBXGUoSTUy6DkKk4GXaxBQLm34WAt9z9+8DldkLS4auRILQrTZECl2mNYgGM/s68FngQ2YWAYqzF5YMeWpiEil4mdYgPg20ADe4+26CEUn/mLWoZOhydVKLHC0yqkGESeE7Se93EPRBiPST+iBEjhZ9Jggza6DjL7rrIsDdfVRWopKhT01MIgWvzwTh7uqIlsHl6qQWOVr061YbZjYB6LjtdtjUJNIPamISOVpkeqHc5Wa2GdgK/B7YBqzKYlwyVOlWGyJHjUxHMf0DcDbwprvPAD4C/FfWopKhT6OYRApepgmizd3rgYiZRdz9aaA6i3HJkKUahMjRItM+iANmVgH8AfiJmdUBTdkLS4YsXQchctTItAaxEDgCfAX4DfAWcFm2gpJhQAlCpOBleqFccm3hgV5XFElLTUwiR4uMEkS3C+ZKCO7D1KQL5WTAVIMQKXiZ1iA6LpgzMyNocjo7W0HJMKDrIEQKXr+fKOeBXwIXZSEeGco86a4triupRQpdpk1Mn0x6GyEY4tqclYhk6EpOEGpiEil4mQ5zTR6xFCO4knrhoEcjQ1xyDUIJQqTQZdoH8VfZDkSGGfVBiBS8dLf7vpfUt/sGwN2/NOgRydClJiaRo0q6Tup1wHqCO7ieAWwOf+YQDHcV6Qd1UoscTdI9D+IBADP7n8B57h4L3/8rsDr74cmQpSYmkYKX6TDXsUDyRXEV4TyRzKmJSeSokukopjuBF83saYLHjX4IWJytoGSo0igmkaNJpqOY/t3MVgHzwlk3u/vu7IUlQ55qECIFr88mJjP7QPh6BjAZeCf8mRzOE8mcmphEjirpahBfBRYB/zfFMgcuGPSIZAhTE5PI0STdKKZF4euC3IQjQ5pqECJHlYxGMZnZp8ysMpy+1cx+bmanZzc0GbIiRapBiBwFMh3m+r/dvcHMzgP+HLgP+NfshSVDU1iDiBTpOgiRo0CmCSLx797HgWXu/hi6klr6y5MSBEBcV1OLFLJME8ROM1sKfBpYaWal/dhWpKtINHhVM5NIQcv0S/4q4HHgInc/ABwDfC3dRmZ2sZm9YWZbzOyWFMtLzexn4fI1ZlbVbfnxZtZoZn+XYZxS0LrXIJQgRApZRgnC3Q8DdcB54awYwU37emVmUeD7wCXALOAaM5vVbbUbgP3ufgLwXeCubsu/A6zKJEY5CvRoYlI/hEghy3QU0/8H3Ax8PZxVDCxPs9lcYIu7v+3urcDD9HzI0ELggXD6UeAj4TOvMbMrgK3AhkxilKNIIkGoiUmkoGV6L6ZPAKcDLwC4+67EsNc+TCG46jqhls5bdfRYx91jZnYQGGdmzQQJ6UKg1+YlM1tEcCEfEydOpKamJsOP01VjY+OAtx1O3ms5RWNNnA8caW1jBPDH1X8gVpzuNDq66FxKT2WUXqGUUaYJotXd3cwcwMxGZjEmCG4E+F13bwwrFCm5+zJgGUB1dbXPnz9/QAerqalhoNsOJ++5nI4cgD/CiPIKaK7jvHP+DEYeO2jxFQKdS+mpjNIrlDJK28QUNvn8OhzFNMbM/hp4Avi3NJvuBKYlvZ8azku5jpkVAaOBeoKaxt1mtg34G+DvzezGtJ9GClzqPoi6Q81ctfQ56hqa8xSXiKSSNkG4uwOfIugj+A9gJnCbu9+bZtO1wIlmNsPMSoCrgRXd1lkBXB9OXwk85YHz3b3K3auAfwLucPfvZfqhpMB1G8V0z5ObWbttH/c80ee4BxHJsUybmF4ADrh72qGtCWGfwo0Ew2OjwP3uvsHMbgfWufsKgiuyHzSzLcA+giQiQ1XHKKbgOogF//gkW2PjmMxevlG0in9e8xcsX7OD0qIIbyy5JI+BighkniDmAdea2XagKTHT3U/tayN3Xwms7DbvtqTpZoLaSV/7WJxhjHK0CGsQjy6ayzefPcKYjU/xucgqzoi+xY/e9x3eaYpQ19DMhMqyPAcqMrxleqHcRcD7CW7vfVnSj0j/hQliXHkRlaVFlMSPADCHzfzVjr9n0zt1am4SKQCZPlFue7YDkWGg+4Vy3s7exhY+NXUE7IabY3/NP9oyroz8nuVrStTcJJJnup+S5FDPW20sva6aP3//SDxaSsvsa4h5hIm2n7LiCAvnTGb1zXoUiUi+KEFI7ll42iVutdHahJWUU1lWzEFGMi7SREssTmVpkfohRPIo005qkfcuRRMTAK1NUFLB3sYWvGwMH586go2V09mj6yJE8koJQnIoTBDR4uA18TyI1iYoGcnS66rh3yYAjSy5YnZeIhSRTmpiktzpqwZRXB5Mjxgb3JJDRPJOCUJyL0UfBCXh7b3KxsCR/fmJS0S6UIKQHOrlgUFtQR8EENQgmlWDECkEShCSO96tD6JLJ3VYgxgxJmhi0vOqRfJOCUJyz8JnUseTE0RSHwQOLYfyEpqIdFKCkBzqerO+rgkibGIqGxO8qh9CJO+UICR3UjUxuXdrYhobvKofQiTvlCAk95KbmNqOAN61DwJUgxApAEoQkkMproNoDe8eX9ytBqFrIUTyTglCcse790HEoLUxmE6+DgJUgxApAEoQkkMpbrXRdjiY7t7EpD4IkbxTgpDcS/RBJDcxJUYxFY+AojLVIEQKgBKE5E73ezF1aWIq71xP92MSKQhKEJJDKW610VGDGNm5mu7HJFIQlCAk9yLJTUyJPoiKzuUjxkLzwdzHJSJdKEFI7vRoYmrvbGIqTm5iyqwGUXeomauWPkedHiwkkhVKEJJDGTYxZdgHcc+Tm1m7bR/3PLF5kOMUEdAT5SQfki+U6z7MFdL2Qcy8dRUjYgdZWvJdXuC/sXwNLF+zg9KiCG8suSSLgYsML6pBSO70uFAubGIqGtE5D4IaRFsTxFpT7mb1TQv45rQXmBd5nXMjr1FWHGHhnMmsvnlBlj+AyPCiBCG51/1WG8lDXCHtxXITKko47+CvAJgR3UNLLE5laRETKsuyFbHIsKQmJsmdlNdBNHVtXoKu92OqmNBzP28/xbjWXbQT5fLjW9l47HT2qKNaZNApQUjudSSIeNdnQSSkux/T2vuh/Fii0+ZRsWcTS66Ynb1YRYYxNTFJDoU1CAtPu44mpl5qECmamPbufJv4G6tomn0NjD8JDuzofPCQiAwqJQjJnUQTkxluUf5j/XbajjR0vQYC+nwmxCsr7gF3/vXQ+TB2RtBMdWhnlgMXGZ7UxCR5ESNK3YEm6mP7OW76xK4LUzwTYuatq2iJxVld8mv+4Kdy70sx1r3yJ35aAuzbCmOOz13wIsOEahCSQ0EN4n/99EWa41FKaaPlcAO/2HiAmbeu6lytbHTwmlSDWH3TAhaedhyTbS+v+AzKiiN84ANh38P+bTmKX2R4yWqCMLOLzewNM9tiZrekWF5qZj8Ll68xs6pw/oVmtt7MXg1fL8hmnJIjYRPTGVXH8C7HMs32MNJamDDumK7XMESiUDq6S4KYMKqMCUWHiZpzyEbTEovTXjEp6PBWghDJiqw1MZlZFPg+cCFQC6w1sxXuvjFptRuA/e5+gpldDdwFfBrYC1zm7rvMbDbwODAlW7FKbpUVR3k7fhwnRHZRTjNeXN7zGoYRo3t0Urcc2gPAX15YTfO+6fypoTloWtq/NVehiwwr2axBzAW2uPvb7t4KPAws7LbOQuCBcPpR4CNmZu7+orvvCudvAEaYWWkWY5WcCGoQDc0xyiedxPuieyi3Fg7ESnquOmJsj07q2//8OACmTpnKkitms/S6ahhbpRqESJZkM0FMAd5Jel9Lz1pAxzruHgMOAuO6rfMXwAvu3pKlOCVXwiamRR96Px+aN49IPLiVxqXVJ/Zct2xMzxv2Ne0NXsuP7ZynBCGSNQU9isnMTiZodvpoL8sXAYsAJk6cSE1NzYCO09jYOOBth5P3Wk4jG7dxFrBhw0ZaS0Zzejj/zW272NXWdb8nHmwjvr+W9Y8/xZjS4P+YSbueYybw7CubaX1jHwDT9sV5/5H9/PF3vyZW3O2CuzzQuZSeyii9QimjbCaIncC0pPdTw3mp1qk1syJgNFAPYGZTgV8A/83d30p1AHdfBiwDqK6u9vnz5w8o0JqaGga67XDynsvpTxtgHZw8ezZMnQsvfQOAk06ew0lzuu537Sv3MSP+GusOj2fJRacEM/+wFt6Ecz5yKRSFLY4bD8HbP+K8k6fC5DkDj22Q6FxKT2WUXqGUUTYTxFrgRDObQZAIrgY+022dFcD1wHPAlcBT7u5mNgZ4DLjF3Z/JYoySS4kL5QAqj4PikcFdW5OupE5c73BTEcyJNrF8zfbOW3mfWw8llZ3JAYImJgiamQogQYgMJVnrgwj7FG4kGIG0CXjE3TeY2e1mdnm42n3AODPbAnwVSAyFvRE4AbjNzF4Kf1LctU2OLokEYWAG494XvE1KEKtvWsDlcybTEBlFsbUzvri581beh+thZLcuquQEkYKeOicycFntg3D3lcDKbvNuS5puBj6VYrslwJJsxiZ5ZAZA86gZlO1+lf2xYsJrp5kwqozK0iJq28dABMa211NZOjMYBnt4L5R3SxBlo4J5vQx1TX7q3JJPnJLFDyUy9OhKasmd5CYm4L8OBFdM/+SFvV3m721s4bQPfhCAaz5YzJ7GcABb096uI5hCbaOO55VXX+5SS5h56ypm3vIL/vrFT3KRPc/yNTuouuWxrldsi0iflCAkh4IE8YWHXqTqlsf4We0xxDzCA68c7vLlvfS6aj73sXMA+KvZpcH1DhA2MfVMEJuaj2F0y84uz6ZefdMCPj+ziemROj11TmSACnqYqwxNd3ziFIrenMxvN5zNBa1VNBSPY+HJx/GNj3+wc6XKScFrw7vBq3uQIMqP6Vgl0aH9t0WV/M/oXn66ZmuXZ1OfEAsGv50U3UlLq546J9JfqkFI7oRNTGPKS6gsLaIl5vwpOin1I0OLRwQXyyUSRGsTxJq7NDElOrT3R8ZSZHGOK27qUks45tAmAM4cUce186Z3NlWJSEZUg5Ac6hzFtLexhWvnTeczc4/noed3pH5k6KjJcChMEIfDfoqkJqZEh3ZdeyVEoKL9YJdEc97IWmiAouZ6llx4XMrmKRHpnRKE5E7SA4M6+hWg90eGVh7XWYM4XB+8dhvFtLexhbkfOAHegqs+OILnE7WEWAvUbYLjToXdr8CeN5QgRPpJTUySB5bZapWTOxNEUyJBdP2SX3pdNTd89CwAbji9sjPx1G0MnjZ36qcB+Lefr9K1ECL9pAQhOeTpV0k2ahI0/il45nRHE1P3eznSWatI1DKAQ2+vA6B+6kdoiYygeN+bXUY5iUh6ShCSOx1dEJnWII4Dj0NjXa9NTMG8cGRTU+f1FJte/COHvJwz/+UtNsUmc6LV6loIkX5SH4TkQT+amAAadgVf/pFiKB3Vc71ocTDi6XB9x9DXX5a8ygavAoxaH88HbTtlxREu6j6cVkR6pRqE5FA/m5gqgwcE0bA7aGIaeWzvtY+Rx8LhvR1DX6faXrb6cUQNDnk5o+xw6uG0ItIr1SAkd5JGMWVkVFiDOLQr6KRO1byUUH4sNO1lwqgyRpfAMRxiX2Qs7TEoKh/NuPZmrj19eurhtCKSkhKE5EGGCWLkeLBoMJLpcLoE0XnDvuaDdUTM+Yvzz2B343RKdowlsq+FJZee2PVW4SLSJzUxSQ71s4kpEoWKiV2bmHozclxHJ/U/Xhw0TU2aMp0lV8zmirNnBes0HxpI0CLDlhKE5E5HE1M/thk1KfMmpsP1wTEa64J5I8NHiCQ6tpsP9jtkkeFMCUJyKOmBQZmqnAQH34GWgylv9d1h5LHg7dB8oDNBVIQJoixMEC1KECL9oQQhuZdpJzUECaI+fCR5qovkEhLJo6k+uLgOkhJE8NwJNTGJ9I8ShOSO97MPAoImpkTNI10nNQR9FY11wbOrE48yVROTyIAoQUgODbCJKaHPJqYwQTTtDWoQFUmPMO9oYlINQqQ/lCAk9/rbxJTQ1yimRPI4XB/UIComdi5TE5PIgChBSO4MqIlpcud0X01MieRxOEUNoqQSMDUxifSTEoTk0ECamI7rmKxrL+99veIRUDwy7KTuVoOIRKC0Uk1MIv2kBCG5158mptJRtERGsN8ruOeprX2vWz4ODtUGw1mTaxBAe8koal7ZomdCiPSDEoTkTj+bmGbeuoqqr6+kNjaGfV6Z/nbdI8cFT5GDrjUIYE9bKa2N+/VMCJF+0L2YJIf618S0+qYFLFm5ie2bJmPxWPrbdZcfC+++EkyHCSJx++9HSoqo5AjL1+xg+ZodlBZFeGPJJe/x84gMbapBDFN1h5q5aulzuW1y6efdXCeMKqOytIivtH6em/1/pb9dd+JqauhoYkrc/rvJRlJphykrjrBwzmRW37zgvX4akSFPCWKYuufJzazdti9PTS6Z90HsbWzhsnkn86MvXMS186azp7Gl95WTRzmFNYhEkjkYH8FoPRNCpF/UxDTMzLx1FbFYG1dHn6bEP5TjJpf+D3Ndel11x/SSK2b3vXJHgrAu10zsbWzhuIkTmdSwQc+EEOkHJYhhZvVNC/jlz37Iop33c4LtZEn79Vx62uTcPIazvw8M6q9EUigfFzyGNLT0ump4cgb8sYElC0/O3vFFhhg1MQ0z59/9NK9vfQeAS6P/RbvDf760i/PvejrjfST3X/Q23bcsfUEnrqbuNoIJCO7H5O3Q2pSdY4sMQUoQQ0Tiy3njroM9vrAT8zbuOsgJEyqYHNkPwHg7yKn2FuUlUVbfvCDlPpIdaI5z1dLnuOs3r3f0XyT3ZSSm71z5eo/jXrX0OV7beQCArfWN2SmEsAbx8oHSnkkqvB/Tgm+t4NJ7V/eILVW5pSrDdMu3H2rv8v6Pm/dw8m2/4aJ/+j2X3ruaS+9dzSf+5RldjyFHhejixYvzHcOgWLZs2eJFixYNaNvfv/wW1z70Jqtee5c508bwxYde5OTJo7q8fnjmeJpaYvzVj9Z2mc50effXSaPLuOSfV7Pi5Z38bO07PPT8Dv7f+lpOnW1W6ZQAAA5hSURBVDK6x/7SHePDM8dzz5Ob+c2G3Ty/dR+v7TrIkZZ21mzd12Xe81v38fruBj4eeY7Zto1DlDPV9vDztj/j31Zv5b7VW9l58EiXfcyeMrrjGJ968E2aD+xm6p+e4tPRp3nf7pXMeveXXBp5jviul6nf9Rbu8My7UHughZ+s2cGupP3Vv/M6l7Gab75zBhefe9YgnwFArBmeX8qzre/nl0fO4IIPJtUk9r0NG/+T5a0f5vVDpV3KJPk1udxSlWG65W/sa+eNPZ2f+YmNf6KxpZ36xlbqGlqoa2hh98Fm6htbue+Zrf3+Pfe1bvI59tc/Xs+/P7uVO1Zu4lcv7+LnL+zsOLf6OrcHEkN/z+0TK9s4ZsKk9/SZR5YO7dbxbdu2UVVVlZNjffOb33x38eLFy1ItMx/I/XEKUHV1ta9bt25A257zDyvZ1RSUw4kTKtiyp5ETxnd9vXbu8QD85PkdXaYzXd79tbK0iEPNbURwimgnQpwi2jlxfDnb9x7iqtMnYcT51Ys7mDFuBLX7GrjilImYx/nNa7VcevIEIt7Obze8S5Q4RZbYR7xjXxHiwbLEvHCdz0afoJQ2VrSfw9eKH+Gh2ALua/8YE+wAxcRoo4g2jxIL93KC7eT0yBaqI28yK7IdgEYvo95HcZAKiokxw96lzNoAaPJSNngVO3wi7/oxAESJc37kFU6JbOOTLYt5wU8CYNudHx/Q76y7mbeuoiTWyKtln+NfY5dyZ+wzAJQWRWiJxflw5GUeKLmLV+NVHPSRxIkQIxqWUoRYx2s0ePUo7VjXeR2vkWA77zoveZ+Jn8S+krdrTzpunAjzPziJxzftZdKYkWw/0MJHT55M3KL86rU6PnbKFOIW5Rcv7+ayOdOIW5RHX9zN8eMq2VJ/mL84swq3CD9Zt4sZx1by5t7DnDC+ks11PWtpmZzb6c7nzM/tWK/Hnz+1iCmTJw/4eNfOPZ4vfeREbvzpiyy+bBaLf7WRxZfN4u9/8RpH2mLs2HeY448pp7ykiG9dMbtjefLr9z5zOjhd9pE8r7fp7vtJvH7pghP4/IPrmXrMCIqjQcNMcTTScfz+Hu/ZZ57loe0j+ow38Zlj8TjF0QhLrztzQKPzzGy9u1enXJbNBGFmFwP/DESBH7r7nd2WlwI/Bs4E6oFPu/u2cNnXgRuAduBL7v54X8caSIKouuUxplodX4iuIEqcqMWJ0h7+yQdfrFF6zotY8AXcucy7fCkX0U7EPPxyTpqXlAyCL/V4v+IdTP/Zfg5fafsCf1v0CF8sWpF2/QYfwcvx9/FsfDZ/iJ/CJqpo9+APobQoQmssxlTbw+mRtzjDgkQyzfYwkf040E6EGEW86VP47603UT5mIsuuP5NZk0YPyuepO9TMksc2cs6mb/FI23lsLPpAx0V1exta+Mq/P8XfNd/DKDsc/t5S/F7DJNq5PN7t99q5XT5/d+nEvGsiaifF+/e0TtK8TNbJ4HjxMBnH3ToSZxzrWOYd05GkaWPSmJHUHmhh0phytu9vwbGO7ZwIU44Zyfb9zUwdO5Jt+5uZNraCrfuOcNmcqTjGf7y0m+njKni7/gifOGMaToSfvbCTK8+cjmM8tH4nV1dPx814cO1OThhfOaCk2N8kvHPXLmpqY30m8RPGV3T5R+Cz845nySdO6ff5kpcEYWZR4E3gQqAWWAtc4+4bk9b5AnCqu/8PM7sa+IS7f9rMZgE/BeYCk4EngJPcE1dB9TSQBLFx10H+z/3/j//b9g9pT+R4OK/7f49dl3f+R9nuif8YB/aHEw/fx5LWiVuw7zaPELfgD6DVoxC+uhltHsUtWKed5OnwGOH0XkYTJ8Lk0WVMbXyFSV5HHWNp8WKKaafEgk9XYu1si09gK1No8whmwWCkj88+jld2BndHXXpdNZ9/MCj7U6aMZuVru9OW/YkTKvjdVz/cr99XOt/4xas89PwOSqIRWtvjXDu38w/mwu/8PuV/1cmiBu3hn0Oi5gEQMYh7z+WtsRhFYaKPeC//MHT5Z6Jr0okSp9jiSWdXMF1sQTIyDxJRMB0cJ9pxdiT+yWgn6sHXa1G3f3K6J8KOny7rtFMUxps8L2rd/pkJv3K7rEOcSLhequN0fE4bGq0UCe3emYA6k5sBhgMeDsLwpPeJ6YD1uizxHsC953zvtk5i2dPxOXwr9lmAfg9Z7ytBZLMhby6wxd3fDoN4GFgIbExaZyGwOJx+FPiemVk4/2F3bwG2mtmWcH/PDWaAsyaPZnf5icyt+5c+1+vvF0f35f2VvL8ux4j3PEZi+qQJFRxbWcqBxhbGVZRQv+8IANOOKWdvYwv7G1poa4/T1u4cN6qM8W3tlBRFcGBt/CSMk4g7TKwsZXR5MeMqStjd0MrmukZKiyK0xeJMHmn88IbzeOj5HexpaGb1zRd0xJyY/vyD6/js2dN5e08jextb2NPQwvjKUrbuaaK8NMr0ceU0t8U5cLit/wWTxt7GFq6dN53PzD2+I8aEg0faqCiNcvq0Mazbvp/WWJxRI4oZX1naEeO4ihJqw3JLTnqJMky3fE9DC+UW47AXcUz4mZ1gVG3cnfY4jCgOal1H2uLB7zbev99zj3W7nSf91eu5luJ8Hvi57R1Jo8TawYPkUWJB4iuxdtydiDmlUWhvjxHBKYtCrD2seVscPE5RWEeImmMe1CciHUnWw594R2KzcF60o+6RSJLBPJK2iSbv15wi4uBO1OJEPNyXJe/fw3qPdxwrwZK+xhPbJRYnvuYjFk57cI4E0945HW5gEMbuSduTnEp418cRMfjorIncnu56oX7IZg3iSuBid/9c+P46YJ6735i0zmvhOrXh+7eAeQRJ47/cfXk4/z5glbs/2u0Yi4BFABMnTjzz4Ycf7necX36qieaYc8LYKJv3x4nFobwYRpcYB1ud0SVGZYmxtzn45X3pjDLuebEF3BlfHuFQi6ddnthP4nX34c4yd4c4UBIJ/zgjMGNUpGN/6Y7xpTPKqHknxoGWYLq/7nmhmTGlxvxpRT32031Z/eE2vnJWRb+PMZw0NjZSUdF3GSWXa6bnUrrzLvlci8WhpT34Ykn+6y6JQnGk93N7IDEM5Nzec7gdMxvwZz7U6uxq8h6fL1MRgrigs4yS5xVHoC3eczq3x3MsTAWptu/NgmlFXH9yab/iW7BgQV6amLKeIJK9l07qmpoa5s+fP6BthxOVU3oqo/Teaxl9/sF1jK8s61JLbWuPc7i1PWgCjYe1NqC8OEpJUaTXmmK62mFvNcXk/fVWU4w7FEWMU6eN7vfxjhw5wklTxvVYNzmG5BaB5rBFYNbkUV3uPpCJfDUx7QSmJb2fGs5LtU6tmRUBowk6qzPZVkSGof5+AQ5EqubTXB4vSKJnZ/246WTzQrm1wIlmNsPMSoCrge7DZVYA14fTVwJPeVClWQFcbWalZjYDOBF4PouxiohIN1mrQbh7zMxuBB4nGOZ6v7tvMLPbgXXuvgK4D3gw7ITeR5BECNd7hKBDOwZ8sa8RTCIiMviyejmiu68EVnabd1vSdDPwqV62/RbwrWzGJyIivdO9mEREJCUlCBERSUkJQkREUhoyN+szsz3A9gFufiywdxDDGapUTumpjNJTGaWXyzKa7u7jUy0YMgnivTCzdb1dKCKdVE7pqYzSUxmlVyhlpCYmERFJSQlCRERSUoIIpHyakvSgckpPZZSeyii9gigj9UGIiEhKqkGIiEhKwz5BmNnFZvaGmW0xs1vyHU8hMrP7zawuvD27dGNm08zsaTPbaGYbzOzL+Y6pEJlZmZk9b2Yvh+X0zXzHVIjMLGpmL5rZr/Mdy7BOEOFjUb8PXALMAq4JH3cqXf0IuDjfQRSwGPC37j4LOBv4os6jlFqAC9z9NGAOcLGZ5f+e1oXny8CmfAcBwzxBkPRYVHdvBRKPRZUk7v4HgrvtSgru/q67vxBONxD8cU/Jb1SFxwOJB4MXhz/qBE1iZlOBjwM/zHcsoAQxBXgn6X0t+sOW98DMqoDTgTX5jaQwhc0nLwF1wO/cXeXU1T8BN9H5lNG8Gu4JQmTQmFkF8B/A37j7oXzHU4jcvd3d5xA8JXKumc3Od0yFwswuBercfX2+Y0kY7glCjzaVQWFmxQTJ4Sfu/vN8x1Po3P0A8DTq20p2LnC5mW0jaO6+wMyW5zOg4Z4gMnksqkifzMwIno64yd2/k+94CpWZjTezMeH0COBC4PX8RlU43P3r7j7V3asIvouecvfP5jOmYZ0g3D0GJB6Lugl4xN035DeqwmNmPwWeA2aaWa2Z3ZDvmArMucB1BP/xvRT+fCzfQRWgScDTZvYKwT9nv3P3vA/llN7pSmoREUlpWNcgRESkd0oQIiKSkhKEiIikpAQhIiIpKUGIiEhKShAifTCzcUlDV3eb2c5wutHM/iXf8Ylkk4a5imTIzBYDje7+7XzHIpILqkGIDICZzU/cr9/MFpvZA2a22sy2m9knzexuM3vVzH4T3oYDMzvTzH5vZuvN7HEzm5TmGB9Oqr28aGaVufhsIglKECKD4/3ABcDlwHLgaXc/BTgCfDxMEvcCV7r7mcD9wLfS7PPvgC+GN7c7P9yXSM4U5TsAkSFilbu3mdmrQBT4TTj/VaAKmAnMBn4X3LqJKPBumn0+A3zHzH4C/Nzda7MRuEhvlCBEBkcLgLvHzazNOzv34gR/ZwZscPc/y3SH7n6nmT0GfAx4xswucnfd3E5yRk1MIrnxBjDezP4MgtuDm9nJ4fSNZnZj9w3M7P3u/qq730Vwc7sP5DRiGfaUIERyIHyk7ZXAXWb2MvAScE64+ANAfYrN/sbMXgvvftoGrMpJsCIhDXMVybNwNNQnwyQiUjCUIEREJCU1MYmISEpKECIikpIShIiIpKQEISIiKSlBiIhISkoQIiKSkhKEiIik9P8DeC4iz1m4s6QAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "max_iter = 2\n",
    "solution = mpo.solve(max_iter=max_iter, mpopt_options={'method':'residual', 'sub_method':'merge_split'})\n",
    "post = mpo.process_results(solution, plot=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Notice that the residual in the first iteration is higher towards the discontinuity. In the second iteration, the segments near the start and final times merged so that segments close to the discontinuity are split and the solution converged with in +1 iteration. \n",
    "\n",
    "The solution is close to the exact solution, lets look at the terminal time."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Terminal time using Adaptive-II scheme with +1 iterations , s : 4.16416187794445 vs 4.1641\n"
     ]
    }
   ],
   "source": [
    "print(f\"\\nTerminal time using Adaptive-II scheme with +{max_iter-1} iterations , s : {post.get_data()[-2][-1][0]} vs 4.1641\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Lets reduce the tolerance on the residual to see if the solution improves"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "mpo = mp.mpopt_h_adaptive(ocp, 10, 4) # Use ctrl + tab for help, inside ()\n",
    "mpo.plot_residual_evolution = True\n",
    "mpo.tol_residual[0] = 1e-4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Iteration : 1, None\n",
      "      solver  :   t_proc      (avg)   t_wall      (avg)    n_eval\n",
      "       nlp_f  | 170.00us (  4.25us) 171.71us (  4.29us)        40\n",
      "       nlp_g  | 481.00us ( 12.03us) 460.60us ( 11.51us)        40\n",
      "    nlp_grad  |  25.00us ( 25.00us)  24.66us ( 24.66us)         1\n",
      "  nlp_grad_f  | 225.00us (  5.63us) 225.04us (  5.63us)        40\n",
      "  nlp_hess_l  | 265.00us (  6.97us) 261.73us (  6.89us)        38\n",
      "   nlp_jac_g  | 667.00us ( 16.68us) 671.56us ( 16.79us)        40\n",
      "       total  |  43.17ms ( 43.17ms)  42.97ms ( 42.97ms)         1\n",
      "Adaptive Iter., max_residual : 1, 0.09630934143819947\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "max_iter = 10\n",
    "solution = mpo.solve(max_iter=max_iter, mpopt_options={'method':'residual', 'sub_method':'merge_split'})\n",
    "post = mpo.process_results(solution, plot=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The solution doesn't change after 1st iteration because there is no segment that has residual lower than 1e-4. Residual threshold is a hyper parameters in this method. We can increase the number of segments for the method to work with strict tolerance."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Submethod -2: Equal area segments**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Iteration : 1, None\n",
      "      solver  :   t_proc      (avg)   t_wall      (avg)    n_eval\n",
      "       nlp_f  | 152.00us (  3.80us) 151.77us (  3.79us)        40\n",
      "       nlp_g  | 461.00us ( 11.52us) 456.01us ( 11.40us)        40\n",
      "    nlp_grad  |  25.00us ( 25.00us)  24.71us ( 24.71us)         1\n",
      "  nlp_grad_f  | 225.00us (  5.63us) 223.92us (  5.60us)        40\n",
      "  nlp_hess_l  | 266.00us (  7.00us) 263.52us (  6.93us)        38\n",
      "   nlp_jac_g  | 647.00us ( 16.17us) 652.93us ( 16.32us)        40\n",
      "       total  |  43.53ms ( 43.53ms)  43.40ms ( 43.40ms)         1\n",
      "Iteration : 2, 0.09630934143819947\n",
      "      solver  :   t_proc      (avg)   t_wall      (avg)    n_eval\n",
      "       nlp_f  | 106.00us (  3.79us) 107.28us (  3.83us)        28\n",
      "       nlp_g  | 322.00us ( 11.50us) 315.04us ( 11.25us)        28\n",
      "    nlp_grad  |  23.00us ( 23.00us)  22.67us ( 22.67us)         1\n",
      "  nlp_grad_f  | 165.00us (  5.69us) 161.86us (  5.58us)        29\n",
      "  nlp_hess_l  | 183.00us (  6.78us) 180.69us (  6.69us)        27\n",
      "   nlp_jac_g  | 463.00us ( 15.97us) 467.32us ( 16.11us)        29\n",
      "       total  |  29.42ms ( 29.42ms)  29.35ms ( 29.35ms)         1\n",
      "Stopping the iterations: Iteration limit exceeded\n",
      "Adaptive Iter., max_residual : 2, 0.09630934143819947\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "mpo = mp.mpopt_h_adaptive(ocp, 10, 4) # Use ctrl + tab for help, inside ()\n",
    "mpo.plot_residual_evolution = True\n",
    "max_iter = 2\n",
    "solution = mpo.solve(max_iter=max_iter, mpopt_options={'method':'residual', 'sub_method':'equal_area'})\n",
    "post = mpo.process_results(solution, plot=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Notice that the residual is reduced by concentrating the nodes close to the discontinuity.\n",
    "\n",
    "The terminal free time in this case is given below"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Terminal time using Adaptive-II scheme-2 with +1 iterations , s : 4.1641736605365685 vs 4.1641\n"
     ]
    }
   ],
   "source": [
    "print(f\"\\nTerminal time using Adaptive-II scheme-2 with +{max_iter-1} iterations , s : {post.get_data()[-2][-1][0]} vs 4.1641\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Adaptive schem-III : Direct optimization\n",
    "\n",
    "The third scheme solves for the optimal segment widths along with the original OCP itself.\n",
    "Hence, no iterative procedure is involved. \n",
    "\n",
    "For the moon lander problem with one disconitnuiy,one needs only 3 segments to get the exact thrust profile. Further, being bang bang profile, the thrust is constant at both corners. \n",
    "\n",
    "Let's use only 3 segments and minimum order polynomials to capture the solution to check the effectiveness of the method"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Initialize the optimizer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "mpo = mp.mpopt_adaptive(ocp, 3, 2) # Use ctrl + tab for help, inside ()\n",
    "mpo.mid_residuals=True"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Solve the NLP and process the results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "      solver  :   t_proc      (avg)   t_wall      (avg)    n_eval\n",
      "       nlp_f  | 367.00us (  2.70us) 374.95us (  2.76us)       136\n",
      "       nlp_g  | 882.00us (  6.49us) 850.13us (  6.25us)       136\n",
      "  nlp_grad_f  | 324.00us (  3.68us) 314.97us (  3.58us)        88\n",
      "  nlp_hess_l  | 964.00us ( 10.71us) 957.94us ( 10.64us)        90\n",
      "   nlp_jac_g  | 897.00us (  9.34us) 903.33us (  9.41us)        96\n",
      "       total  |  68.53ms ( 68.53ms)  68.57ms ( 68.57ms)         1\n",
      "Optimal segment width fractions: [0.31820188 0.03099379 0.65080433]\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAEGCAYAAABiq/5QAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nO3de3xU9Zn48c8zk5kkk3tICAQC4Y6IQGpAUKlcimvrpbVrdVttwV7s7lZtu62/drfd1Xa124u1Vte1ta5it1ZrrbZWRVEhKlZFbiKCIMr9koQAuV8nz++PMwlJgMxkLpkk87xfr3nNzJlzeeabyXPO+Z7v+X5FVTHGGJM4XPEOwBhjTP+yxG+MMQnGEr8xxiQYS/zGGJNgLPEbY0yCSYp3AKHIy8vT4uLisJatr68nLS0tugENMVZGwVkZBWdlFFx/l9H69euPqGp+z+mDIvEXFxezbt26sJYtKytjwYIF0Q1oiLEyCs7KKDgro+D6u4xEZM+ppsesqkdEHhCRChHZ0mVaroi8ICLvB55zYrV9Y4wxpxbLOv7lwEU9pn0XeElVJwEvBd7HzKaKTaysXsmmik2x3IwxxgwqMavqUdVXRKS4x+RPAgsCrx8CyoDvxGL7myo2sXTFl2jXVp5Z8TyXj/ghi8bN4YyRmeRnJMdik8YYMyhILLtsCCT+p1V1euD9cVXNDrwW4FjH+1Msex1wHUBBQcHZjz76aJ+2vbJ6JX89/jSgoEJz5YW0VC0EICtZKMpwMSbD5TxnuhjhE9wuCe+LDnJ1dXWkp6fHO4wBzcoouP4oIxEhLS0Nt9sd0+3EiqripL7o8vv91NfX0zOfL1y4cL2qlvacP24Xd1VVReS0ex1VvQ+4D6C0tFT7ekEkuyKbF1a+QIu/BW+Sl3v/4R9wtRSz7VAtWw/WsO1QDS/sraXV74SQnORickEG00dlMmN0NjNGZzG5IAOPe+i3eLWLcsFZGQXXH2W0a9cuMjIyGDZsWEwSaKzV1taSkZER1XWqKlVVVdTW1jJu3LiQlunvxF8uIiNV9ZCIjAQqYrWhWcNn8ZsLf8Njrz/GlfOuZNbwWQCcOyGvc56WtnY+qKxj2yFnR7D1UA3PbD7EI2v3Ac7OYFphJjMDO4IZo7MZn5eGK0HPDIyJt6amJoqLiwdl0o8VEWHYsGFUVlaGvEx/J/6ngKXAjwPPf4nlxmYNn8XxrOOdSb8nb5KLM0ZmcsbIzM5pqsqeqgbe3n+cd/ZXs3l/NY+t28fyv+0GID05iemjOnYG2ZSMyaYwOzWWX8MY04Ul/ZP1tUxilvhF5BGcC7l5IrIfuBkn4T8mIl8C9gBXxmr74RIRivPSKM5L45OzRgHgb1d2VtR12Rkc58HXdtPibwdgZFYKZ4/N6XycMTITj9vFpopNrCtfR2lB6Wl3PsYY099i2arns6f5aHGsthkrbpcwZUQGU0ZkcGVpEQDNbX62H65lw55jrN97nPW7j/L05kMApHhcTCqqYl/yL2inDa/bw/0X3m/J35gh6s477+S6667D5/P1Ot8999zDjTfeGHS+rv74xz9yyy23sG3bNtauXUtp6UnXavtsUNy5OxAlJ7kDF4GzWXaeM+3g8UY27D3G+j3HeOnQa7RpKyJKU1sL//j4Y3x0uDBn3DDmjs9ldE7of3hjzMB25513cs011wRN6Pfeey9f/vKX+5T4p0+fzhNPPMFXv/rVSMPsZIk/igqzUynMTuWSGYV8suIKvrzyOVr9rYgriTG+s3j+3XIeW7cfgNE5qZwT2AnMHT+MolzbERgTC9Gscq2vr+fKK69k//79+P1+/v3f/53y8nIOHjzIwoULycvLY/Xq1fzTP/0Tb731Fo2NjVxxxRX84Ac/4K677uLQoUPd5lu5ciU333wzzc3NTJgwgQcffPCkJrFnnHFGRDGfiiX+GJk1fBb3X3h/tx9ce7uyvbyWNz6s4s0Pj7LqvXL+tMHZEYzKTuWcwE5g3vhhjM5JtYtYxkRoU8UmvrLyK06zbreX31z4m4iS/3PPPUdhYSHPPPMMANXV1WRlZXHHHXewevVq8vKcVoO33XYbubm5+P1+Fi9ezObNm7nxxhv5+c9/3jnfkSNHuPXWW3nxxRdJS0vjJz/5CXfccQf/8R//EZXv3pugiV9EJgD7VbVZRBYAM4DfqurxWAc32M0aPqvbj8zlks5WRNeeN472duX9ijre+LCKNz6somx7JU9sOABAYVYKc8cP47yJeZw/KY+CzJR4fQ1jBq115eto8bfQTjut7a2sK18XUeI/66yz+Na3vsV3vvMdLrnkEubPn3/K+R577DHuu+8+2traOHToEFu3bmXGjBnd5nnjjTfYunUr553n1BW3tLQwb968sGPri1CO+P8ElIrIRJwbqv4C/B74RCwDSwSuLheNl55bjOqJHcGbHx6lbEclT2x0dgSTC9I5f2I+8yflcc74XHxeO1kzJpjSglK8bi+t7a14XB5KCyK7MDp58mQ2bNjAs88+y/e//30WL1580hH6rl27uP3223nrrbfIyclh2bJlNDU1nbQuVWXJkiU88sgjEcUUjlCyR7uqtonI5cDdqnq3iGyMdWCJSESYXJDB5IIMvjCvmPZ2ZeuhGtbsPMKa94/wuzf38MBru/C4hY+MyWH+pDzOn5TPWaOyEra7CWN603EjZ7Tq+A8ePEhubi7XXHMN2dnZ3H///QBkZGRQW1tLXl4eNTU1pKWlkZWVRXl5OStWrOi8ozk9Pb1zvrlz5/K1r32NnTt3MnHiROrr6zlw4ACTJ0+O9GsHFUribxWRz+LccHVpYJondiGZDi6XMH1UFtNHZfGPF0ygqdXPW7uPsub9I7z6/hFuX7mD21fuICvVw7kThjF/Uj4LpuTbDWXGdNGzyjUS77zzDjfddBMulwuPx8O9994LwHXXXcdFF11EYWEhq1evpqSkhKlTp1JUVNRZlQOwbNmybvMtX76cz372szQ3NwNw6623npT4n3zySW644QYqKyu5+OKLmTVrFs8//3xE3yNoJ20iMg34R+B1VX1ERMYBV6rqTyLach+UlpaqDcRysiN1zbwWOBtYs/MIh6qd08mpIzJYOHU4C6cM5yNjskkK0t/QUC6jaLEyCq4/ymjbtm0xaeXSX2LRV0+HU5WNiITXSZuqbhWR7wBjAu93Af2W9M3p5aUn88lZo/jkrFGoOncXr3qvgtXbK/jNKx9yb9kHZKYk8dHJ+SyaOpwLJuczLN26pDYm0YXSqudS4HbAC4wTkVnAD1X1slgHZ0InIkwqyGBSQQZfvWACNU2trHn/CKveq6BseyVPbz6ECMwcnc2iwNnAmYWZ1uGcMQkolDr+W4A5OIOmoKqbRGR8DGMyUZCZ4uETZ43kE2eNpL1d2XKwmtXvVbJqewW/eHEHd7ywg+EZyXxsWgEj2tqY1+YnOWlw9nFujOmbkC7uqmp1j5uJ2mMUj4kBl0s6u5f4+scmcaSumbLtlax6r5w/bzxAQ4uf+7a8yIIp+Vx45ggWTMknM8Wu3xszVIWS+N8Vkc8BbhGZBNwI/C22YZlYyktP5oqzR3PF2aNpavXzqydXc9g9nBe3lfP05kN43MK8CXlcOK2AJdMK7OYxY4aYUBL/DcD3gGbgEeB54D9jGZTpPykeN7OGJ7FgwQz87crGvcdYubWc5989zPf/vIXv/3kLs4qyWTKtgIumj2BCvg0/aMxgF3RcQVVtUNXvqepsVS0NvD75NjQz6LldQmlxLv/2iTMo+/YCVn7zo3z7wsmoKj97fjuLf/4yF935Cne99D4fVNbFO1xjBow777yThoaGoPPdc889Ic3X1U033cTUqVOZMWMGl19+OcePR95bzmkTv4j8VUSeOt0j4i2bAa3jLuLrF03iL9efz+v/uoibL51GenISd7ywo3MncLftBIwJOfHfe++9fU78S5YsYcuWLWzevJnJkyfzX//1X+GG2am3qp7bI167GTJGZqVy7XnjuPa8cRyubmLFlkM8s/kQP39hBz9/YQdTR2Rw8Vkj+cSMkVYdZAaUho0baVj7Fr45s/GVlES0rnh0y3zhhRd2vp47dy6PP/54RN8Bekn8qvpyx2sR8QJTAQW2q2pLxFs2g9aIrJSQdgIXzxhJje604SdN3DRs3Mjea7+ItrQgXi9jHnwgouQf726ZH3jgAa666qqw4+8Qyg1cFwO/Aj4ABOcmrq+q6oqIt24Gvd52Ar9Y8wLpY+8H8eNxefjunO9Q3VJtOwHTbxrWvoW2tEB7O9ra6hz5R5D449kt82233UZSUhJXX3112PF3CKVVz8+Bhaq6Ezr7538GsMRvuum5E7j5lbv4W1UboDT7m/nh67cigo1BbPqNb85sxOtFW1sRjwffnNkRrS9e3TIvX76cp59+mpdeeikqAzQFbdUD1HYk/YAPgdqIt2yGtBFZKfzTOReSkpSMCzducQOK0k5TWwvfeuoJfvfGHqrqmtlUsYn737mfTRWb4h22GWJ8JSWMefAB8m+8MeJqHnC6Zfb5fFxzzTXcdNNNbNiwATjRLTNwym6ZO3R0ywxOff1rr73Gzp1Oeq2vr2fHjh0nbfO5557jpz/9KU899VSfxurtzWmP+EXk04GX60TkWeAxnDr+zwBvRWXrZkjr2hd6ljeLn771U1r8LYgridb6cXz/z1v4wcpnSR3zGxC/nQmYmPCVlESc8DvEo1vm66+/nubmZpYsWQI4O4xf/epXEX2P03bLLCIP9ragql4b0Zb7wLpljq3+KqOug17PzJ/Je4dr+dHf7mFT7SMgiqpQJJ/mH2d+hcVnFJCePHBGGbPfUXDWLXNwA75b5lgmdhHZjVNd5AfaThWYGXp6DohxxshMvjX/43xl5RPOmYAkUVU5mq8/uonkJBeLzxjOpTMKWTh1OCke60DOmGgJpVVPCvAl4Eygs9MWVf1ihNteqKpHIlyHGeR6Do03I28m6/ce469vH+TZdw7x7DuHSfO6WTKtgEtnFjJ/Uj7epFAuTRljTieUc+n/A94D/g74IXA1sC2WQZnE0vNMYHZxLrOLc/mPS6bx5q6j/PXtg6zYcpg/bzpIZkoSF00fwaUzC5k3fljQ0cXM0KOqUWnZMpQEG0mxp1CGXtyoqiUisllVZ4iIB3hVVeeGG6SI7AKO4Vws/rWq3neKea4DrgMoKCg4+9FHHw1rW3V1dSfdCWe6Gwxl1NauvFvl581DfjaUt9HkhwwvzC5I4pyRSUzKceGKYTIYDGUUb/1RRunp6RQUFJCVlTUok7/f78ftjm61papSXV1NeXk5dXXdu09ZuHDhKev4Q0n8a1V1joi8AvwzcBhYq6phD8YiIqNU9YCIDAdeAG5Q1VdON79d3I2twVZGTa1+yrZX8tfNB3lpWzlNre0UZCZz8VmFXDpzJLOKsqOeFAZbGcVDf5RRa2sr+/fvP2W7+MGgqamJlJTod3OekpLC6NGj8Xi6j6MR9pi7wH0ikgP8O/AUkA6c/p7iEKjqgcBzhYg8iTPC12kTvzFdpXjcXDR9BBdNH0F9cxsvvVfBX98+yO/e2MMDr+1idE4qF88YyUVnjmDm6GwbXnII8Xg8jBs3Lt5hhK2srIySKDUtjUQog63fH3j5MhDxkIsikga4VLU28PpCnGsHxvRZWnISl80s5LKZhVQ3trLy3cM8vfkQ97+6i1+//CH5Gcl87IzhLJlWwLkT8qx1kDH0fgPXNar6OxH5l1N9rqp3hLnNAuDJwKl4EvB7VX0uzHUZ0ykr1cNnSov4TGkRxxtaWL29ghe3VvDUpoM8snYfqR43H52cx5JpI1g0dTi5ad54h2xMXPR2xJ8WeI7q3Qaq+iEwM5rrNKanbJ+Xy0tGc3nJaJrb/Lz+QRUvbivnxa0VPP9uOS6B0rG5LAkML1mclxZ8pcYMEb3dwPVrEXEDNar6i36MyZioSk5ys2DKcBZMGc5/flJ550A1L24tZ+XWcm57dhu3PbuNicPTWTx1OBdMyad0bK7dK2CGtF7r+FXVLyKfBSzxmyFBRJgxOpsZo7P5lwunsO9og3MmsK2cB17bxa9f+ZA0r5vzJuYFdhb5FGanxjtsY6IqlFY9r4nIfwN/AOo7JqrqhphFZUw/Kcr1dXYlXdfcxt92HqFsRyUvb69k5dZyAKYUZDDe14K36IidDZghIZTE33FLZdeWNwosin44xsRPenISF545ggvPHIGqsrOijrLtlazeXsHKD2tZ8Zs3u50NfHRyHqNzotNNrjH9KZTmnAv7IxBjBhIRYVJBBpMKMvjKR8ez4sXVuEeecdLZwNhhPs6bmMf5E/OYN34YOdZSyAwCIfV7Gxh+sWcnbdb23iSM1CRhQY+zgTU7j/DaziM8tekgv39zLyJwZmEm503I47yJecwuziXVa/cNmIEnlN45fwX4gIXA/cAVwNoYx2XMgNX1bODa88bR5m/n7f3VvBbYEXRcJPa6XXxkbDbnT8zj3Il5zBiVZZ3KmQEhlCP+cwOds21W1R+IyM+x8XaN6ZTkdnH22BzOHpvDjYsn0dDSxtpdR/nbB1Wsef8It6/cASt3kOZ1c3ZxLueMy2XOuFxmjM4iOcnOCEz/CyXxNwaeG0SkEKgCRsYuJGMGN583qfO+AYCqumZe/7CKNz88ytpdR/nZ89sB8Ca5KCnKDuwIhuFJ28M7VRspLSi14SdNTIWS+J8WkWzgZ8AGnBY9v4lpVMYMIcPSk7lkRiGXzCgE4Fh9C2/tdnYCa3cf5b9X74TXX8I35n5E2nCLh+vPuJ3PTD+fLJ8nyNqN6btQWvX8Z+Dln0TkaSBFVatjG5YxQ1dOmrez2ShAbVMr//X6//DXvX5AadNWfvryM9z6RAMT8tMoGZPDR8bkUDImm8kFGbitt1EToVAu7m4GHgX+oKofAM0xj8qYBJKR4uHKMy/ghQO/o7W9lSR3Et/92GVUHy9k495jrHqvgsfX7wcgzetmZlF2546gZEyOdTZn+iyUqp5LgauAx0SkHecO3sdUdW9MIzMmgfQce7hrHb+qsqeqgY37jrFx73E27D3GvS9/gL/dGUSpeJiPj4zJYdaYbKaPymLayEzrftr0KpSqnj3AT4GfisgknAFZfgLYL8uYKOo59nAHEaE4L43ivDQuLxkNQGOLn837j7Nx33E27DnGK+8f4YmNBwBwu4RJw9OZPiqLs0Zlde4M7J4C0yHUG7jG4hz1XwX4gf8Xy6CMMb1L9bo5Z/wwzhk/DHDOCg5WN7HlQDVbDlTzzoFqyrafqCJyCUzssjM4a1QW0woz8XlDSgFmiAmljv9NwAM8Bnwm0J++MWYAERFGZacyKjuVvwtcNFZVDtc08c7+EzuDV3Yc4YkNBwLLwNhcH1NHZDJlRAZTR2QwdWQmY3J9dgF5iAtld/8FVd0e80iMMVElIozMSmVkVmpnCyKA8sDO4N2DNWwvr+G9Q7Ws3HqYwCUDUjwuJhdkMKXA2RFMHZHBlBEZ5KUnx+mbmGgLpY7fkr4xQ0hBZgoF01L42LSCzmmNLX7er6jlvcO1bD9cy3uHa1i9vYI/BqqKAPLSvUzIT2fC8HTnOT+NCfnpjMpOtQHtBxmr4DPGkOp1dw5Q01VlbXPnjmD74Vo+PFLPM5sPUd3Y2jlPcpKLcXlpZNLEhtYdnTuEcXlppCVbihmI7K9ijDmt/Ixk8jOSOX9SXuc0VeVofQsfHqnng4o6Pqis44PKerbsrWPdqvc7q4w6lh+T62Nsro+iXB9jcn2MGea8z89IRsTOFOIhlIu7PuBbwBhV/UqgSecUVX065tEZYwYcEWFYejLD0pOZXZzbOb2srIx5589nT1UDH1TU8eGRevZU1bP3aANv7jrKk5sOoF12CikeF0U5J3YGY3J9FGanUpiVyoisFIalea0KKUZCOeJ/EFgPzAu8PwD8EbDEb4zpJjnJzeSCDCYXZJz0WXObnwPHGtl7tIF9RxvYe7SBPVXO8+sfVtHQ4u82v9ftYkRWCiM7HtmpFGalMDKwYyjMTiXH57GzhjCEkvgnqOpVgUHXUdUGibCkReQi4Jc4N4Hdr6o/jmR9xpiBLznJzfj8dMbnp5/0WUf10cHjTRysbuRwtfN86HgTh6obWbfnGIc3H6Ktaz0S4HELw9Kc6qi8dC956cnkZSQ7z+le8ru8z0712BlEQCiJv0VEUnF65UREJhBBfz0i4gbuAZYA+4G3ROQpVd0a7jqNMYNb1+qjs0ZnnXKe9nblSF0zB6ubOFzdyMHjTVTUNnOkznlU1jWz7VAtR+qaT9pBACS5hGyfl2yfh6xUD9mpznOWz0N2qpes1CSyfd4u0zxkpHhIS3aT6nEPqTOLUBL/LcBzQJGIPAycB1wbwTbnADs7bgQTkUeBTwKW+I0xp+VyCcMzUxiemQJF2aedT1WpbmylstbZGRypa+FIYAdxrKGF6sZWjje0crimifcO11LT2Eptc1uv2xYBn8eNLzmJNK+btOQk0rxJ+JLdznNgWorHjTfJhdcteNwuvEmuzmev28X7h9to3VqOxy2dn7lEcAm4RJAuzwdee5S6tS8ydsnlnH3h56JalqG0418pIuuBuYAAX1fVIxFscxSwr8v7/cA5EazPGGM6iXQc2XuZdIprDafS5m+npqmN4x07hsZWqhtaqW1qpaHFT31zG/Utfhpa2qhvPvF8rL6F/ccaaQh83tjip8Xf3vvGNq0DwEMbo6SSMVJBkVRSJBUUSQVjpIK62mqGv5BKoR/aVmzh7buSmLnoykiLplMorXpeUtXFwDOnmBYzInIdcB1AQUEBZWVlYa2nrq4u7GUThZVRcFZGwQ2lMhIgO/AAwBt4nJabjn4rVRW/OjsTd/NxkhsPk9JYTmpTOd76g2T5j5DeXEFaaxXCiSqpNkmixjOcak8B2/YnM81fi1sBP2x+6g8ccw2P2vc7beIXkRScQdbzRCQHpywAMnGO2sN1ACjq8n50YFo3qnofcB9AaWmpLliwIKyNlZWVEe6yicLKKDgro+ASsoyaauD4Hji2G44FnjveH98LbU3dZm/2DiN5xGTImQnZYyGnGHKc56T0EeS6XOQCNaseo23tzeCHNjecedlVzIxi2fZ2xP9V4BtAIU5zzo7EXwP8dwTbfAuYJCLjcBL+PwDRrcAyxpho8LdC9b5TJ/Zje6DxaPf5kzOdRJ4/BSZdGEjsgUdWEa+/9kZIO8eZi67k7btg35oXKDx/SVSreaCXxK+qvwR+KSI3qOrd0dqgqraJyPXA8zjnRg+o6rvRWr8xxoRMFeoqTnPUvgdq9oN2qbN3eSC7yEnkI2d1O2Ineyyk5jhXgqNg5qIro57wO4RycfduEZkOTANSukz/bbgbVdVngWfDXd4YY0LWXNd7dUxrQ/f500c4yXzsvJOqY8gYCa7BP6BNKBd3bwYW4CT+Z4GPA2uAsBO/McZEjb/NOTI/XXVMQ49GiN4MJ5EPmwgTFvc4ah8DntR+/wr9LZR2/FcAM4GNqnqtiBQAv4ttWMYYE6AK9Ue6JPPd3ZN79QHQLt09uJIgq8hJ5lMv7pHYi8GXG7XqmMEqlMTfqKrtItImIplABd1b5RhjTGRa6p1ql9MdtbfWd58/bbiTzIvOgbN6VscUgts6Hu5NKKWzTkSygd/gtO6pA16PaVTGmKGl3Q81B06f2Osrus/vSTuRyMddcHJ1jDetv7/BkBLKxd1/Drz8lYg8B2Sq6ubYhmWMGVRU8bTUwIH1p07u1fuhvUu3COKGrNFOMp9yUZeLqMXO67S8hK+OiaW+3LmLqu7uOW0ga9i4Ed9zz9GQlYWvpCTe4RgzuLU29lodc15LLfyty/y+PCexjzobzvx096P2zFHg9sTjWxjic+duv2jYuJG9S5eS0drK3hXPMuaen+M7dzG4XPEOzZiBqd0PNQdPtGHvWR1Td7j7/EmpJxL52PPYWdXGxNmLTxy1J5/c/bIZGOJx526/aFj7FtraCgra0kLDXcvwrW4JnFJ2Oa3s+JHmFENKZnyDNiaWVKHxWC9t2vdB+4mxdBEXZAaqYyZ9zGkR0/VmpfTh3apj9peVMXHqgn79SiY8/X7nbn/xzZmNJCfT3tKCK8mD7/J/hLzWEz/4/eug6Xj3hVJzu5+Odt0xZI22U1Mz8LU2deliYHePo/a90Fzdff7UXOf3PnImnHFZj+qY0ZDUa89kZpDqrapnNrCvI+mLyBeAvwf2ALeo6tHTLTsQ+EpKGPPgg2z5wx+YftVVp67jbzzm7AR6tg8+tBm2Pd3j6KfjYlTxKXYMxdY22PSP9naoPdT9qL3r69qD3edPSnFaweQUQ9Hck7sYsLPchNRbVc+vgY8BiMhHgR8DNwCzcHrNvCLm0UXIV1JCQ3X16S/spuY4j8JZJ3/WUd/Z7Ygp8Nj+3MnNz7wZJ+0UGsqVhveP4Ju/GN9sG3LA9K5h40Ya1r6Fb+YZ+MZmnr46xt91ADxxLpTmjIUJC7t3MZA9FtIL7LqWOUlvid/d5aj+KuA+Vf0T8CcR2RT70OLM5XY6Y8ouAuaf/HlL/SkugO2Gqp2w8yUaDrexd/Uw1C/I/z7EmItd+KYWn7oayf45E0tbS6A6Zlfnb6hh87vsXb4NbVPErYxZWIUvL3DGmZLt/G4KzoQpn+hygDHOOQtNSo7r1zGDT6+JX0SSVLUNWExgUJQQlksM3jQomOY8elKl4e5foKvuBxRVFw3N4/CJwq5X4O1HocsADM7p+NjTVCNZ64hBp70d6spPXx1Tc4Buf3+3l4YPRgZ6HRDn91JwDb4vXxvo8fH0wwwaE47eEvgjwMsicgRoBF4FEJGJQHUvyxkRfPMXIg/8H9raing8+JbdCh1VTm3Nzin7sd2Bo77dJxLD3tehuab7+nx5XXYGPXYMmaOGRG+Bg04fB+Ago9D5242bf/JOPn0EvrffRq794onfyyVLnQuuxsRAb616bhORl4CRwEpV7ThEceHU9ZteOBeXH3DqbOfM7n6dISkZ8iY6j546mtx1vabQkVQOrIN3nzxNh1TFp94xpObE7DsOaT0G4Bj/wStQuTzsATjwpPTcQje9/l6MibJeq2xU9Y1TTNsRu3CGFl9JSd//gUWcFkK+XBj1kZM/70ndJKMAABigSURBVOyC9hQ9FW57Chqqus+fnNVjZ9DxepyTkBK1uV63ATg6jtR3B16fPADHaEkKlN1YKCzpfj9IlAbgCOv3YkwYrK5+sHEnnUjiXHDy551VED12DBXbYMfzp2wRMkuy4fisk88Y0vIHdxPVKA7A8cqG7SxYOOB7KTEmJJb4h5qUTBhxlvPoqb3due2+c4fgJEHZ/TbsfPHkW/I9vu6dZ/VsA+71xfrb9K4/B+CQnTH7Gsb0N0v8icTlgsxC5zH23M7JG8vKnAGgu3XCtbv7WcOuV07uEz294PQ7hsAQdZ1t03uptz7tPL0OwLHH6fHxdANwnHFJjzbtxXaTnTEBlvjNCZ5U5+Jk/pSTP1N1rh90JuATbdDZ+wZsebz7oNRuLw1No9j7lxbUr0hSEgVfugx/mxff3Hn4PlIKQMP6tey9/jtOa5YkN2P+aR6+7NoQBuCYA2d9xgbgMCYM9l9iQiPi9JGelgejS0/+vK2lS7WL82j4y99Q/wGno7zWVg7/+k+gIA/+vvMGpYat6WhzBiBoaysNL7+A76MjbAAOY2LIEr+JjiQv5I53HgG+vI3IGqdtOuBcY+i4oS37k/guKsU39Tjy3iNom99pv/7/HoGPWMsWY2LJEr+Jma5t093ZWZT/149P3KD099dDSQm+uTBmykXWft2YfmSJ38RU17bpyZMnnzLBW/t1Y/qXJX7TbyzBGzMwyImeGAYuEanEGQcgHHnAkaBzJTYro+CsjIKzMgquv8torKrm95w4KBJ/JERknaqeohmK6WBlFJyVUXBWRsENlDKyTuCNMSbBWOI3xpgEkwiJ/754BzAIWBkFZ2UUnJVRcAOijIZ8Hb8xxpjuEuGI3xhjTBeW+I0xJsFY4jfGmARjid8YYxKMJX5jjEkwlviNMSbBWOI3xpgEY4nfGGMSjCV+Y4xJMJb4jTEmwVjiN8aYBGOJ3xhjEowlfmOMSTCW+I0xJsEMisHW8/LytLi4OKxl6+vrSUtLi25AQ4yVUXBWRsFZGQXX32W0fv36I6cac7ffE7+IpACvAMmB7T+uqjf3tkxxcTHr1q0La3tlZWUsWLAgrGUThZVRcFZGwVkZBdffZSQie041PR5VPc3AIlWdCcwCLhKRuXGIwwwU+9bCqz93nhOZlYPpKoa/h34/4ldnyK+6wFtP4GHDgCWqfWvRhy6Dtmba3V42LnyImrySeEd1ks0VbbS/Vx6z9Wce2UjJ6qWIvwUdwOXQm1iX0VAQahl1/T1IUjKy9CkomhO1OOJSxy8ibmA9MBG4R1XfPMU81wHXARQUFFBWVhbWturq6sJeNlHEs4zG7Hmc4rZmXLSjbS2sWvEE/+P3xyWWoDaEV90Yin92/4VZSS24pZ22gV4OvYlhGQ0ZIZRR199De1szu1b9lr1jG6IWQlzH3BWRbOBJ4AZV3XK6+UpLS9Xq+GMnrmW0by2tD16C+FtxJXn54OO/p6Hg7PjE0ov1G9Zz9kdiF5evfD0TVnwOaW9FXZ4BWw69ibSMtL0NqT8K/tYoRjWwtLS04PV6g84n/haSGisRAAHShkNS8mnnT0lJYfTo0Xg8nu7rEVmvqqU9549rqx5VPS4iq4GLgNMmfjOEFc3h0TPuoXzzC3x72ZeZFMXT2Wg69oGbmUXZsdtA0WIo+CvsfhUpnj9gy6E3kZbRrl27yBiey7BhwxCRKEY2cNTW1pKRkRHazC310FwLyRngPX1LIFWlqqqK/fv3M27cuJBWHY9WPflAayDppwJLgJ/0dxxm4HjfewZPebL49iBMdlFVNCeq9biDTVNTE8XFxUM26feZN63XhN9BRBg2bBiVlZUhrzoeR/wjgYcC9fwu4DFVfToOcZgBor7ZT5p3UNxSYmLMkn54+lpuUflvExEXkK6qNcHmVdXNwOBqrmBiqr65jbRkd7zDMCZhhN2OX0R+LyKZIpKGUz+/VURuil5oJlHUt7ThsyN+M0Ts3r2b3//+931ebvny5Vx//fUnTX/vvfeYN28eycnJ3H777dEIMaIbuKYFjvA/BawAxgGfj0pUJqHUN7eRnmyJ34RhAN701lvib2tr6/P6cnNzueuuu/j2t78daWidIkn8HhHx4CT+p1S1FbsRy4ShvtmPz2tVPaaP9q2Fhy6DVbc5z1FI/r/97W+ZMWMGM2fO5POfd45jd+/ezaJFi5gxYwaLFy9m7969ACxbtowbb7yRc889l/Hjx/P4448D8N3vfpdXX32VWbNm8Ytf/ILly5dz2WWXsWjRIi699FKOHj3Kpz71KWbMmMHcuXPZvHlzrzENHz6c2bNnn9RUMxKRJP5fA7uBNOAVERkLBK3jN6anuuY2MlKi96M2CWL3q+BvAfU7z7tfjWh17777LrfeeiurVq3i7bff5pe//CUAN9xwA0uXLmXz5s1cffXV3HjjjZ3LHDp0iDVr1vD000/z3e9+F4Af//jHzJ8/n02bNvHNb34TgA0bNvD444+zYsUKbr75ZkpKSti8eTM/+tGP+MIXvhBR3OEIO/Gr6l2qOkpVP6GOPcDCKMZmEkRtUysZKVbVY/qoeD64vSBu57l4fkSrW7VqFZ/5zGfIy8sDnCoWgNdff53Pfe5zAHz+859nzZo1nct86lOfwuVyMW3aNMrLT98Vw5IlSzrXt2bNms6ziUWLFlFVVUVNTf8eM4f93yYiBcCPgEJV/biITAPmAf8breDM0Keq1FkdvwlH0RxY+pRzpF88Py73QCQnn7ibtrdeEAZad9WRVPUsB54HCgPvdwDfiDQgk1gaW/20K6TbEb8JR9EcmP+tqCT9RYsW8cc//pGqqioAjh49CsC5557Lo48+CsDDDz/M/Pm9n1lkZGRQW1t72s/nz5/Pww8/DDjdpeTl5ZGZmRlx/H0RyX9bnqo+JiL/CqCqbSIyCHuVMvFU1+S0crAjfhNvZ555Jt/73ve44IILcLvdlJSUsHz5cu6++26uvfZafvazn5Gfn8+DDz7Y63pmzJiB2+1m5syZLFu2jJycnG6f33LLLXzxi19kxowZ+Hw+HnrooV7Xd/jwYUpLS6mpqcHlcnHnnXeydevWiHYWkfy31YvIMAIteQJ96ldHsD6TgGqbncRvdfxmIFi6dClLly7tNm3s2LGsWrXqpHmXL1/e7X1dndPbvMfjOWn+ZcuWdb7Ozc3lz3/+80nrW7ZsWbf5OowYMYL9+/eH+A1CE8l/278ATwETROQ1IB+4IipRmYTRccRvid+Y/hP2f5uqbhCRC4ApOB2Hbg+05TcmZHXNHVU91pzTmP7S58QvIp8+zUeTRQRVfSLCmEwCqW1yjhWsjt+A0zLGOmrru76OqxLOf9ulvW0fsMRvQlZrVT0mICUlhaqqqiHdH38sdPTHn5KSEvIyff5vU9Vr+7qMMadzoqrHEn+iGz16NPv37+9Tv/KDTVNTU58SdKg6RuAKVSQ3cA0DbgbOxznSXwP8UFWrwl2nSTwdF3fTLPEnPI/HE/IIUoNVWVkZJSXx75U+khu4HgUqgb/Hac1TCfwhGkGZxFHX3EZykgtvUiQ/RWNMX0RymDVSVf+zy/tbReSqSAMyiaW2uc3q943pZ5EcZq0UkX8QEVfgcSVOFw7GhKyuyfrpMaa/hdOcsxanTl9w+ub5XeAjF1AHRG+0ADPk1TW3WT89xvSzcFr1ZMQiEJOY7IjfmP4X0X+ciOQAk4DO9kmq+kqkQZnEUdvcxqjs1HiHYUxCiaQ555eBrwOjgU3AXOB1YFGQ5YqA3wIFOFVG96nqL8ONwwxudc2tZKTYSaQx/SmSi7tfB2YDe1R1IVACHA9huTbgW6o6DWdn8bXAIC4mAVlVjzH9L5LE36SqTQAikqyq7+F02NYrVT2kqhsCr2uBbcCoCOIwg1TH6FvWnNOY/hXJf9x+EckG/gy8ICLHgD19WYGIFOOcKbx5is+uA64DKCgooKysLKwg6+rqwl42UcSrjFr8SqtfqTi4l7Kyw/2+/b6w31FwVkbBDZgyUtWIH8AFwGWAtw/LpAPrgU8Hm/fss8/WcK1evTrsZRNFvMqosrZJx37naf3t33bFZft9Yb+j4KyMguvvMgLW6Slyajjt+DNVtUZEcrtMfifwnA4cDWEdHuBPwMNq3TgnLOunx5j4COc/7vfAJThH6x03cnV9Ht/bwuL0t/q/wDZVvSOM7ZshoibQF39mig3CYkx/CucGrksCyfsCVd0bxjbPAz4PvCMimwLT/k1Vnw1jXWYQq250En+WzxK/Mf0prHNsVVUReQY4K4xl1+CcHZgE15n4Uy3xG9OfImnOuUFEZkctEpNwOhK/VfUY078iuap2DnC1iOwB6gnU8avqjKhEZoY8O+I3Jj4iSfx/F7UoTEKqaWzD63aR4rFBWIzpT2EnflXdAyAiw+nSSZsxoapubCUz1WMDaxvTz8I+1BKRy0TkfWAX8DKwG1gRpbhMAqhpbCUz1drwG9PfIjnH/k+cTtZ2qOo4YDHwRlSiMgmhurHV6veNiYNIEn+rqlYBLhFxqepqoDRKcZkEUNNkid+YeIjkPPu4iKQDrwAPi0gFTuseY0JS3djKuLy0eIdhTMKJ5Ij/k0AD8E3gOeAD4NJoBGUSg1X1GBMfkRzxfxX4g6oeAB6KUjwmQbS3q3Nx127eMqbfRXLEnwGsFJFXReR6ESmIVlBm6KtraaNd7eYtY+Ih7MSvqj9Q1TOBrwEjgZdF5MWoRWaGtBq7a9eYuInGLZMVwGGgChgehfWZBNDZT48lfmP6XSQ3cP2ziJQBLwHDgK9YPz0mVCcSv93AZUx/i+S/rgj4hqpuCjqnMT1YVY8x8RNJXz3/Gs1ATGI5Wu8k/mFpyXGOxJjEY90imrg41tACQLaNvmVMv7PEb+Kiqq6FNK+bFI873qEYk3As8Zu4ONbQQk6aN95hGJOQ+lzHLyK1gHadFHjfMQJXZpRiM0PY0foWci3xGxMXfU78qpoRi0BMYjnWYInfmHiJqKpHRGYGumu4XkRCbsMvIg+ISIWIbIlk+2bwOlrfQq7PEr8x8RDJDVxfBx7GuVt3OE7XzDeEuPhy4KJwt20Gv6P1VsdvTLxEcgPXl4BzVLUeQER+ArwO3B1sQVV9RUSKI9i2GcSaWv00tPitqseYOIkk8Qvg7/LeH5gWFSJyHXAdQEFBAWVlZWGtp66uLuxlE0V/l9HRpnYAKvfvoqxsf79tNxL2OwrOyii4gVJGkST+B4E3ReTJwPtPAf8beUgOVb0PuA+gtLRUFyxYENZ6ysrKCHfZRNHfZfTuwWooW8PckrNYMH1Ev203EvY7Cs7KKLiBUkZhJX4RceEMrF4GnB+YfK2qboxSXGYIO1rv3LWbY3ftGhMXYSV+VW0XkXtUtQTYEOWYzBBXWdsMQH6G9dNjTDxE0pzzJRH5exHpc72+iDyCcyF4iojsF5EvRRCHGWQqAol/eGZKnCMxJjFFOubuvwBtItJEH+7cVdXPRrBdM8hV1DTj87pJT7a++I2Jh0i6ZbY7eE1YKuuarZrHmDiK5Aaul0KZZkxPFTVNDLfEb0zchNNJWwrgA/JEJIcTbfczgVFRjM0MUZW1zZwx0vryMyZewqnq+SrwDaAQWM+JxF8D/HeU4jJDWGVtMx+dbEf8xsRLOL1z/hL4pYjcoKpBu2cwpqvGFj+1zW1Wx29MHEVycfduETkXKO66HlX9bRTiMkNURW0TgNXxGxNHYSd+Efk/YAKwiRN99ihgid+clrXhNyb+ImlIXQpMU1UNOqcxAQePNwJQmGWJ35h4ieTO3S3A4OhhywwY+485iX9UTmqcIzEmcUVyxJ8HbBWRtUBzx0RVvSziqMyQdfB4Izk+Dz6v3bVrTLxE8t93S7SCMInjwPFGO9o3Js4iadXzsogUALMDk9aqakV0wjJD1YFjjYzPT4t3GMYktEi6bLgSWAt8BrgSZ1CWK6IVmBl6VNU54s/2xTsUYxJaJFU93wNmdxzli0g+8CLweDQCM0NPZV0zDS1+xuRaVY8x8RRJqx5Xj6qdqgjXZ4a4DyvrAZgwPD3OkRiT2CI54n9ORJ4HHgm8vwpYEXlIZqj6oLIOgPH5lviNiadILu7eJCKf5sSYu/ep6pO9LWMSW/OHb3CjdxUjq/Mg+5x4h2NMwgqnW+aJQIGqvqaqTwBPBKafLyITVPWDaAdphoB9a7l6xw0kuVpx/d9fYOlTUDQn3lEZk5DCqZO/E6cL5p6qA58ZcxLd9SpubcVNO/hbYPer8Q7JmIQVTuIvUNV3ek4MTCuOOCIzJFXlz6FVk2jHDW4vFM+Pd0jGJKxwEn92L5+F1E5PRC4Ske0islNEvhtGDGaQeattIle3/BuHzv4Xq+YxJs7CSfzrROQrPSeKyJdxRuTqlYi4gXuAjwPTgM+KyLQw4jCDyMs7KtnhnUb+x//Nkr4xcRZOq55vAE+KyNWcSPSlgBe4PITl5wA7VfVDABF5FPgksDWMWHp1eMsrZO54jF1ZSmPB2dFefVCp5evxHXydhsJ5cdl+qPbW+Nl68FSXbSKXWr6e0dXrqdyayvxJc/Em2a0exsRbOEMvlgPnishCYHpg8jOquirEVYwC9nV5vx+Iftu+fWvJ+dMV5LW30nrgj1zd8m9s0MlR38zpfER28LD3R3hoI5Okft9+n/0t+hdbO8pAaOO/SWLzGBujx5iBIJJ2/KuB1VGMpRsRuQ64DqCgoICysrI+LT9mz+MUaysuaUdo45uj32dt3lkxiPTU5hx5n+TKNlzEZ/t90dTYREpq9AdGmXPkfbyVbbgDZZC362nK2gdndw11dXV9/g0mGiuj4AZKGcWjU/QDQFGX96MD07pR1fuA+wBKS0t1wYIFfdvKPh889Djtbc24k5KZf9ky5vdn3fK+THjoCfC34HZ7+3/7fVBWVkafyzcUPcpgwqKlTBigZRBMzMpoCLEyCm6glFE8Ev9bwCQRGYeT8P8B+FzUt1I0B5Y+xe5Vv2X8oi/0/wXFwPbZ/arTdHGQJryIWBkYMyD1e+JX1TYRuR54HnADD6jquzHZWNEc9o5tYHy8Ek7RHEt2VgbGDDhxGf9OVZ8Fno3Hto0xJtGJqsY7hqBEpBLYE+biecCRKIYzFFkZBWdlFJyVUXD9XUZjVTW/58RBkfgjISLrVLU03nEMZFZGwVkZBWdlFNxAKSO7m8YYYxKMJX5jjEkwiZD474t3AIOAlVFwVkbBWRkFNyDKaMjX8RtjjOkuEY74jTHGdGGJ3xhjEsyQTvw24EvvROQBEakQkS3xjmWgEpEiEVktIltF5F0R+Xq8YxpoRCRFRNaKyNuBMvpBvGMaqETELSIbReTpeMYxZBO/DfgSkuXARfEOYoBrA76lqtOAucDX7Hd0kmZgkarOBGYBF4nI3DjHNFB9HdgW7yCGbOKny4AvqtoCdAz4YgJU9RXgaLzjGMhU9ZCqbgi8rsX5px0V36gGFnXUBd56Ag9rNdKDiIwGLgbuj3csQznxn2rAF/uHNWETkWKgBHgzvpEMPIEqjE1ABfCCqloZnexO4P8B7fEOZCgnfmOiRkTSgT8B31DV2IxTOYipql9VZ+GMrzFHRKYHWyaRiMglQIWqBh2XvD8M5cQf0oAvxgQjIh6cpP+wqj4R73gGMlU9jjMyn1076u484DIR2Y1T7bxIRH4Xr2CGcuLvHPBFRLw4A748FeeYzCAjIgL8L7BNVe+IdzwDkYjki0h24HUqsAR4L75RDSyq+q+qOlpVi3Fy0SpVvSZe8QzZxK+qbUDHgC/bgMdiNuDLICUijwCvA1NEZL+IfCneMQ1A5wGfxzlC2xR4fCLeQQ0wI4HVIrIZ54DrBVWNa3NF0zvrssEYYxLMkD3iN8YYc2qW+I0xJsFY4jfGmARjid8YYxKMJX5jjEkwlvhNQhKRYV2aZx4WkQOB13Ui8j/xjs+YWLLmnCbhicgtQJ2q3h7vWIzpD3bEb0wXIrKgo690EblFRB4SkVdFZI+IfFpEfioi74jIc4GuHBCRs0XkZRFZLyLPi8jIINu4oMvZxkYRyeiP72ZMB0v8xvRuArAIuAz4HbBaVc8CGoGLA8n/buAKVT0beAC4Lcg6vw18LdCp2fzAuozpN0nxDsCYAW6FqraKyDuAG3guMP0doBiYAkwHXnC69cENHAqyzteAO0TkYeAJVd0fi8CNOR1L/Mb0rhlAVdtFpFVPXBRrx/n/EeBdVZ0X6gpV9cci8gzwCeA1Efk7VbVOzUy/saoeYyKzHcgXkXngdOEsImcGXl8vItf3XEBEJqjqO6r6E5xOzab2a8Qm4VniNyYCgWE9rwB+IiJvA5uAcwMfTwWqTrHYN0RkS6A3y1ZgRb8Ea0yANec0JkYCrYM+Hdg5GDNgWOI3xpgEY1U9xhiTYCzxG2NMgrHEb4wxCcYSvzHGJBhL/MYYk2As8RtjTIL5//yhuozqswRhAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "solution = mpo.solve()\n",
    "post = mpo.process_results(solution, plot=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Notice that the middle segment width is 0.03. That is the default minimu width of the segment implemented in the method. Let's reduce the minimum allowed segment width to 1e-6 and resolve the problem."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "mpo = mp.mpopt_adaptive(ocp, 3, 2) # Use ctrl + tab for help, inside ()\n",
    "mpo.lbh[0] = 1e-6"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "      solver  :   t_proc      (avg)   t_wall      (avg)    n_eval\n",
      "       nlp_f  | 389.00us (  3.09us) 378.16us (  3.00us)       126\n",
      "       nlp_g  | 898.00us (  7.13us) 870.76us (  6.91us)       126\n",
      "  nlp_grad_f  | 414.00us (  3.94us) 403.64us (  3.84us)       105\n",
      "  nlp_hess_l  |   1.21ms ( 11.19us)   1.19ms ( 11.05us)       108\n",
      "   nlp_jac_g  |   1.14ms ( 10.21us)   1.13ms ( 10.06us)       112\n",
      "       total  |  79.53ms ( 79.53ms)  79.33ms ( 79.33ms)         1\n",
      "Optimal segment width fractions: [3.39885716e-01 3.76889386e-05 6.60076595e-01]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "solution = mpo.solve()\n",
    "post = mpo.process_results(solution, plot=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Notice that the discontinuity is exactly captured using the method with minimum possible collocation nodes."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Terminal time using Adaptive scheme-III , s : 4.16414082180378 vs 4.1641\n"
     ]
    }
   ],
   "source": [
    "print(f\"\\nTerminal time using Adaptive scheme-III , s : {post.get_data()[-2][-1][0]} vs 4.1641\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's check the robustness of the method by increasing the number of segments"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "      solver  :   t_proc      (avg)   t_wall      (avg)    n_eval\n",
      "       nlp_f  |   1.12ms (  4.03us)   1.23ms (  4.45us)       277\n",
      "       nlp_g  |   4.56ms ( 16.48us)   5.18ms ( 18.71us)       277\n",
      "  nlp_grad_f  | 796.00us (  6.75us) 844.97us (  7.16us)       118\n",
      "  nlp_hess_l  |   3.47ms ( 29.95us)   3.47ms ( 29.91us)       116\n",
      "   nlp_jac_g  |   3.68ms ( 31.16us)   3.71ms ( 31.44us)       118\n",
      "       total  | 201.05ms (201.05ms) 212.35ms (212.35ms)         1\n",
      "Optimal segment width fractions: [3.39881646e-01 1.43792309e-05 1.40013893e-05 1.48783033e-05\n",
      " 6.60075095e-01]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "mpo = mp.mpopt_adaptive(ocp, 5, 4) # Use ctrl + tab for help, inside ()\n",
    "mpo.lbh[0] = 1e-6\n",
    "solution = mpo.solve()\n",
    "post = mpo.process_results(solution, plot=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Notice that the time taken by the algorithm is significantly higher compared to iterative schemes. However, the solution is accurate using the Adaptive scheme-III."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Conclusion"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Using simple moon-lander test case OCP various features of the solver package in its current form are demonstrated. Notice that the OCP is defined only once in the beginning. This sheet can be used for all other OCP's merely by changing the OCP definition in the beginning."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
